【LintCode-632】二叉树的最大节点(Java实现)
2017-11-03 21:55
381 查看
第一次代码:
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; b4e6 } 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值节点
如果您有更好的解法,欢迎您在留言区补充,感谢!!
相关文章推荐
- LintCode入门练习——632. 二叉树的最大节点
- LintCode入门练习——632. 二叉树的最大节点
- Lintcode 入门-632. 二叉树的最大节点
- LintCode-(632)二叉树的最大节点
- 632. 二叉树的最大节点(java)
- lintcode 632. 二叉树的最大节点
- 【LintCode 入门】632. 二叉树的最大节点
- 【入门】lintcode 632: 二叉树的最大节点
- 二叉树 Java 实现 前序遍历 中序遍历 后序遍历 层级遍历 获取叶节点 宽度 ,高度,队列实现二叉树遍历 求二叉树的最大距离
- 有一个二叉树, 节点全部为整数,如何找到一个子树,它所有节点的和最大?要求编程序实现。
- LintCode 二叉树的最大节点
- 二叉树排序及二叉树节点的增删改查(java实现)
- 数据结构与算法分析笔记与总结(java实现)--二叉树10:最大二叉搜索子树练习题
- java实现堆排序(放入数组的索引对应二叉树节点位置)、归并排序
- LintCode_632_二叉树的最大结点
- java实现从上往下打印出二叉树的每个节点,同层节点从左至右打印。
- LintCode-二叉树的最大节点
- java 二叉树(七)获取左子树中的最大节点
- 利用栈结构实现二叉树的非递归遍历,求二叉树深度、叶子节点数、两个结点的最近公共祖先及二叉树结点的最大距离
- 二叉树的最大节点-LintCode