1. 程式人生 > >lintcode(632)二叉樹的最大節點

lintcode(632)二叉樹的最大節點

描述:

在二叉樹中尋找值最大的節點並返回。

樣例;

給出如下一棵二叉樹:

     1
   /   \
 -5     2
 / \   /  \
0   3 -4  -5 

返回值為 3 的節點。


思路:

遞迴,並且用陣列物件儲存當前結果

public class Solution {
    /**
     * @param root the root of binary tree
     * @return the max ndoe
     */
    public TreeNode maxNode(TreeNode root) {
        // Write your code here
        ArrayList<TreeNode> result = new ArrayList<TreeNode>();
        result.add(root);
        search(root , result);
        return result.get(0);
    }
    
    public void search(TreeNode root , ArrayList<TreeNode> result){
        if(root == null){
            return ;
        }
        if(result.get(0).val < root.val){
            result.set(0 , root);
        }
        if(root.left != null){
            search(root.left , result);
        }
        if(root.right != null){
            search(root.right , result);
        }
    }
}