1、题源:https://leetcode-cn.com/problems/diameter-of-binary-tree/
2、初始代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
int deepBtree(TreeNode* root){
if(root==NULL) return 0;
return max(deepBtree(root->left),deepBtree(root->right))+1;
}
int diameterOfBinaryTree(TreeNode* root) {
if(root==NULL) return 0;
int h1=root->left?deepBtree(root->left):0;
int h2=root->right?deepBtree(root->right):0;
int h=h1+h2;
return max(max(diameterOfBinaryTree(root->left),diameterOfBinaryTree(root->right)),h);
}
};
3、主要问题:
1、二叉树的深度、高度、层数概念
2、https://www.cnblogs.com/qq952693358/p/9280717.html
4、概念问题:
结点的深度、高度、和层数,有不同的说法:
第一种是,
第二种说法:
(1)对于节点来说,有高度,深度,层数三个概念。
高度:从此节点开始到最下面叶子结点的长度,这个长度就是经历的节点的个数。
深度:从根节点开始到此节点的长度,这个长度也是经历的节点的个数。
层数:该节点所处的位置,根节点为第1层,往下依次加1。
(2)树本身只有高度、深度两个概念。
对于树:高度和深度描述的是同一个东西,指的就是树中节点的最大层数(高度 == 深度)
可以理解为层数最高的叶子结点的层数。
即:树的高度 == 树的深度 == 树中最深的叶子结点的深度 == 树中根节点的高度。
参考链接:https://blog.csdn.net/jigetage/article/details/88823274