码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode Maximum Depth of Binary Tree

时间:2015-03-19 06:23:34      阅读:126      评论:0      收藏:0      [点我收藏+]

标签:

Given a binary tree, find its maximum depth.

The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

思路分析:这题比较简单,关于树的题目通常都可以用递归解决,这题也不例外,递归解法的思路是返回左右子树中深度较大的子树深度加1作为自己的深度,每递归调用一次深度加1.

递归解法(DFS递归搜索)

/**
 * 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) {
        if(root == null) return 0;
        return Math.max(maxDepth(root.left), maxDepth(root.right)) + 1;
    }
}

非递归的解法需要借助队列实现,BFS搜索树节点,首先root入队列,然后不断从队列头取出节点,将该节点的左右孩子(如果有)入队列,直到队列为空。注意维护当前层次的节点数和下一层次的节点数,这样在每次换层的时候,把层次计数器level加1,最后返回level层次数作为结果即可。由于每个node访问一次,时间复杂度O(n)。

非递归解法(借助队列BFS)

/**
 * 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) {
        if(root == null) return 0;
        LinkedList<TreeNode> treeNodeQueue = new LinkedList<TreeNode>();
        int level = 0;
        treeNodeQueue.add(root);
        int curLevelNum = 1;//# of nodes in the current level
        int nextLevelNum = 0;//# of nodes in the next level
        while(!treeNodeQueue.isEmpty()){
            TreeNode curNode = treeNodeQueue.poll();//find and remove; different from peek
            curLevelNum--;
            if(curNode.left != null){
                treeNodeQueue.add(curNode.left);
                nextLevelNum++;
            }
            if(curNode.right != null){
                treeNodeQueue.add(curNode.right);
                nextLevelNum++;
            }
            if(curLevelNum == 0){
                level++;
                curLevelNum = nextLevelNum;
                nextLevelNum = 0;//added a level
            }
        }
        return level;
    }
}


LeetCode Maximum Depth of Binary Tree

标签:

原文地址:http://blog.csdn.net/yangliuy/article/details/44442775

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!