首页 > 代码库 > Minimum -depth -of -binary -tree@LeetCode
Minimum -depth -of -binary -tree@LeetCode
链接:https://www.nowcoder.com/practice/e08819cfdeb34985a8de9c4e6562e724?tpId=46&tqId=29030&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking
来源:牛客网
Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.
基本思想:
叶子节点:度0的结点,没有孩子。
二叉树的最小深度,不同于二叉树的最大深度,不能够单纯使用递归,方式比较所有的叶子节点同时记录所有的到根节点的深度,最后进行比较。
1 /** 2 * Definition for binary tree 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public int run(TreeNode root) { 12 if (root==null) return 0; 13 /*使用递归判断此节点是否是叶子节点*/ 14 if(root.left==null && root.right==null) return 1; 15 /*二叉树左子树空,叶子节点在右子树上*/ 16 if(root.left==null) 17 return run(root.right)+1; 18 if(root.right==null) 19 return 1+run(root.left); 20 /*左右儿子,比较得到其中最小值*/ 21 return Math.min(run(root.left),run(root.right))+1; 22 } 23 }
C++语言更加的简洁,求最大深度树,将最后11行代码修改成 max(L,R)+1;
1 class Solution { 2 public: 3 int run(TreeNode *root) { 4 if(root==NULL) 5 return 0; 6 int L=run(root->left); 7 int R=run(root->right); 8 9 if(L==0 || R==0) 10 return 1+L+R;/*此节点不存在,父节点最多只有一个儿子,计算出叶子叶子节点到此结点的深度,要么只有一个节点,要么根节点*/ 11 return (L<R?L:R)+1; 12 13 } 14 };
Minimum -depth -of -binary -tree@LeetCode
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。