【LintCode-632】二叉树的最大节点(Java实现)

来源:互联网 发布:mysql高效编程 编辑:程序博客网 时间:2024/06/06 03:02

这里写图片描述
第一次代码:

     public TreeNode maxNode(TreeNode root) {          if (root == null) {              return null;          } else if (root.left != null && root.right != null) {              TreeNode leftNode = maxNode(root.left);              TreeNode rightNode = maxNode(root.right);              if (leftNode.val >= rightNode.val && leftNode.val >= root.val) {                   return leftNode;              } else if (rightNode.val > leftNode.val && rightNode.val > root.val) {                   return rightNode;              } else {                   return root;              }          } else if (root.left == null && root.right != null) {              TreeNode rightNode = maxNode(root.right);              if (rightNode.val >= root.val) {                   return rightNode;              } else {                   return root;              }          } else if (root.right == null && root.left != null) {              TreeNode leftNode = maxNode(root.left);              if (leftNode.val >= root.val) {                   return leftNode;              } else {                   return root;              }          }          return root;     }

第二次代码记录:

     public TreeNode maxNode(TreeNode root) {          if (root == null)              return null;          TreeNode leftMaxNode = root.left != null ? maxNode(root.left) : null;          TreeNode rightMaxNode = root.right != null ? maxNode(root.right) : null;          if (leftMaxNode != null && rightMaxNode != null) {              TreeNode tempNode = leftMaxNode.val > rightMaxNode.val ? leftMaxNode                        : rightMaxNode;              return tempNode.val > root.val ? tempNode : root;          } else if (leftMaxNode != null) {              return leftMaxNode.val > root.val ? leftMaxNode : root;          } else if (rightMaxNode != null) {              return rightMaxNode.val > root.val ? rightMaxNode : root;          }          return root;     }

个人解题思路-递归算法:
1. 求出左子树的最大节点的val值 //leftMaxNode.val
2. 当前二叉树节点的val值 //root.val
3. 求出右子树的最大节点的val值 //rightMaxNode.val
4. 返回最大val值节点

如果您有更好的解法,欢迎您在留言区补充,感谢!!

原创粉丝点击