1. 程式人生 > >Google演算法題:二叉樹的最大深度

Google演算法題:二叉樹的最大深度

/**
 * 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 binary tree.
     * @return: An integer.
     */
    public int maxDepth(TreeNode root) {
        if(root==null) return 0;
        
        int maxh=1;
        Queue<TreeNode> q = new LinkedList<TreeNode>();
        q.add(root);
        int knum=1;
        while(!q.isEmpty()){
            knum--;
            TreeNode t = q.poll();
            
            //levelOrder
            //孩子入隊    
            if(t.left!=null){
                q.add(t.left);
            }
            if(t.right!=null){
                q.add(t.right);
            }
            
            if(knum==0 && q.size()>0){
                maxh++;
                knum=q.size();
            }
        }
        return maxh;
    }
}

(2)分治