淘宝客网站管理,wordpress 后台更改密码,宁波建设网图,网站建设功能模块图today我们来练习三道leetcode上的有关于二叉树的题目#xff0c;都是一些基础的二叉树题目#xff0c;那让我们一起来学习一下吧。 https://leetcode.cn/problems/maximum-depth-of-binary-tree/submissions/ 看题目描述是让我们来求出二叉树的深度#xff0c;我们以第一个父… today我们来练习三道leetcode上的有关于二叉树的题目都是一些基础的二叉树题目那让我们一起来学习一下吧。 https://leetcode.cn/problems/maximum-depth-of-binary-tree/submissions/ 看题目描述是让我们来求出二叉树的深度我们以第一个父节点就是我们二叉树的第一层然后依次往下数我们要求的就是我们最大层数我们可以考虑我们用递归的方式。 我们先把这个问题分成子问题首先我们知道二叉树是由好多的子树组成那我们的每一子树都是由一个左孩子和一个右孩子如果两个孩子都是空就是叶子节点那我们这道题的子问题就可以变成如果这个父亲节点是有孩子的证明就是有层数的这个时候我们就可以加上一层但是我们也知道一般的二叉树并不是都有左右孩子节点的这个时候我们就应该返回有孩子节点那边的数量加上1这是对于叶子节点如果是非叶子节点的时候我们得返回值大的那个孩子加上1就是当前有几层依次递归就可以算出我们的节点个数了。我们先来看我们的代码然后来看看递归展开图就能更好的理解了。 int maxDepth(struct TreeNode* root) {if(root NULL){return 0;}if(!root-left !root-right){return 1;}int leftdepth maxDepth(root-left);int rightdepth maxDepth(root-right);if(leftdepth rightdepth){return leftdepth1;}else{return rightdepth1;}
}递归展开图 我们来看这个就是我们第一次往左边递归到叶子节点然后开始返回。这样子也就是意味着我们的左边也是递归完了我们要开始递归右边。再来看看我们的递归展开图。 这样就可以算出我们的层数了所以这题就解决了下两题我放在下一篇文章。