给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树[3,9,20,null,null,15,7]
,3 / \ 9 20 / \ 15 7返回它的最大深度 3 。
class Solution { public: int getDepth(TreeNode*node){ if(node==NULL) return 0; int leftdepth=getDepth(node->left); int rightdepth=getDepth(node->right); int depth=1+max(leftdepth,rightdepth); return depth; } int maxDepth(TreeNode* root) { return getDepth(root); } };
给你一棵 完全二叉树 的根节点
root
,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第
h
层,则该层包含1~ 2h
个节点。示例 1:
输入:root = [1,2,3,4,5,6] 输出:6示例 2:
输入:root = [] 输出:0示例 3:
输入:root = [1] 输出:1
class Solution {
public:
int getNodes(TreeNode*cur){
if(cur==NULL) return 0;
int leftNodes=getNodes(cur->left);
int rightNodes=getNodes(cur->right);
int Nodes=leftNodes+rightNodes+1;
return Nodes;
}
int countNodes(TreeNode* root) {
return getNodes(root);
}
};
404. 左叶子之和
简单
611
相关企业
给定二叉树的根节点
root
,返回所有左叶子之和。示例 1:
输入: root = [3,9,20,null,null,15,7] 输出: 24 解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例 2:
输入: root = [1] 输出: 0这个代码我自己写的有问题,下面放正确的代码,我自己琢磨琢磨
class Solution {
public:
int sumOfLeftLeaves(TreeNode* root) {
if (root == NULL) return 0;
if (root->left == NULL && root->right== NULL) return 0;int leftValue = sumOfLeftLeaves(root->left); // 左
if (root->left && !root->left->left && !root->left->right) { // 左子树就是一个左叶子的情况
leftValue = root->left->val;
}
int rightValue = sumOfLeftLeaves(root->right); // 右int sum = leftValue + rightValue; // 中
return sum;
}
};作者:代码随想录
链接:https://leetcode.cn/problems/sum-of-left-leaves/solutions/866969/dai-ma-sui-xiang-lu-dai-ni-xue-tou-er-ch-j6f9/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。