LintCode之二叉樹的最大節點
阿新 • • 發佈:2017-11-10
-c eno mar width ac代碼 zh-cn class efi es2017
分治問題,可以把整棵樹看做是由一顆顆只有三個節點組成的小樹,一顆樹的構成是根節點、左子樹、右子樹,這樣只需要從左子樹找出一個最大的節點,從右子樹找出一個最大的節點,然後與根節點三個取個最大的,就是最終的結果了。
AC代碼:
/** * Definition of TreeNode: * public class TreeNode { * public int val; * public TreeNode left, right; * public TreeNode(int val) { * this.val = val; * this.left = this.right = null; * } * } */ public class Solution { /* * @param root: the root of tree * @return: the max node */ public TreeNode maxNode(TreeNode root) { // write your code here if(root==null) return null; TreeNode leftMaxNode = maxNode(root.left); TreeNode rightMaxNode = maxNode(root.right); TreeNode resNode = root; if(leftMaxNode!=null && leftMaxNode.val>resNode.val) resNode = leftMaxNode; if(rightMaxNode!=null && rightMaxNode.val>resNode.val) resNode = rightMaxNode; return resNode; } }
題目來源: http://www.lintcode.com/zh-cn/problem/binary-tree-maximum-node/
LintCode之二叉樹的最大節點