首页 > 代码库 > [LeetCode]104 Maximum Depth of Binary Tree

[LeetCode]104 Maximum Depth of Binary Tree

https://oj.leetcode.com/problems/maximum-depth-of-binary-tree/

http://blog.csdn.net/linhuanmars/article/details/19659525

/**
 * Definition for binary tree
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
public class Solution {
    public int maxDepth(TreeNode root) 
    {
        // Solution A:
        return maxDepth_DFS(root, 0);
        
        // Solution B:
        // return maxDepth_BFS(root);
    }
    
    /////////////////////////////
    // Solution A: DFS
    //
    private int maxDepth_DFS(TreeNode node, int lastDepth)
    {
        if (node == null)
            return lastDepth;
        return Math.max(maxDepth_DFS(node.left, lastDepth + 1), maxDepth_DFS(node.right, lastDepth + 1));
    }
    
    /////////////////////////////
    // Solution B: BFS
    //
    private int maxDepth_BFS(TreeNode root)
    {
        if (root == null)
            return 0;
        
        // Use node.val as its depth
        root.val = 1;
        Queue<TreeNode> queue = new LinkedList<>();
        queue.offer(root);
        
        int max = 0;
        while (!queue.isEmpty())
        {
            TreeNode node = queue.poll();
            
            if (node.left == null && node.right == null && node.val > max)
            {
                max = node.val;
            }
            
            if (node.left != null)
            {
                node.left.val = node.val + 1;
                queue.offer(node.left);
            }
            
            if (node.right != null)
            {
                node.right.val = node.val + 1;
                queue.offer(node.right);
            }
        }
        return max;
    }
}


[LeetCode]104 Maximum Depth of Binary Tree