admin管理员组文章数量:1794759
lintcode,二叉树的最大深度
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的距离。
解题思路:递归解乏就是判断左右子树最大深度哪一个更大。还可以用两个栈分别存储节点和节点所在深度,只要节点栈不为空,就取出深度判断是否更大,然后将左右孩子节点放进节点栈和节点深度栈。
一刷ac。二刷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 binary tree.* @return: An integer.*/public int maxDepth(TreeNode root) {if(root == null) return 0;return Math.max(maxDepth(root.left), maxDepth(root.right))+1;}
}
/*** 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;Stack<TreeNode> nodestack = new Stack<TreeNode>();Stack<Integer> depthstack = new Stack<Integer>();int maxdepth = 1;nodestack.push(root);depthstack.push(maxdepth);while(!nodestack.isEmpty()){TreeNode node = nodestack.pop();int d = depthstack.pop();if(d > maxdepth) maxdepth = d;if(node.left != null){nodestack.push(node.left);depthstack.push(d+1);}if(node.right != null){nodestack.push(node.right);depthstack.push(d+1);}}return maxdepth;}
}
版权声明:本文标题:lintcode,二叉树的最大深度 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1725693980a681866.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论