二叉树~之高度与深度

二叉树~之高度与深度

我特别喜欢一个博主,大家都叫他Carl

用Carl的话说,高度与深度的区别为:

二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。

二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。

好了,知识点到此结束。

当然不是!接下来我用两道题,来带大家入门

二叉树的最小深度问题:给定一个二叉树,找出其最小深度。

最小深度是从根节点到最近叶子节点的最短路径上的节点数量。

说明:叶子节点是指没有子节点的节点。

代码语言:javascript复制/**

* Definition for a binary tree node.

* struct TreeNode {

* int val;

* TreeNode *left;

* TreeNode *right;

* TreeNode() : val(0), left(nullptr), right(nullptr) {}

* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}

* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}

* };

*/

class Solution {

public:

int minDepth(TreeNode* root) {

if(root==nullptr) return 0;

if(root->left==nullptr && root->right==nullptr) return 1; // && 用的至关重要--为了防止 root = [2,null,3,null,4,null,5,null,6] 这种情况

int minDepth1 = INT32_MAX;

if(root->left!=nullptr){

minDepth1 = min(minDepth1,minDepth(root->left));

}

if(root->right!=nullptr){

minDepth1 = min(minDepth1,minDepth(root->right)); //

}

return minDepth1+1; // 用于检测从底层到顶端,到顶端距离,依次递增。

}

};平衡二叉树问题:给定一个二叉树,判断它是否是 平衡二叉树

代码语言:javascript复制class Solution {

int getNum(TreeNode* root){

// 结束条件

if(root==nullptr) return 0;

// ♻️条件

int leftNum = getNum(root->left);

if(leftNum==-1) return -1;

int rightNum = getNum(root->right);

if(rightNum==-1) return -1;

if(abs(leftNum-rightNum)>1) return -1;// 定义一个结束状态

return max(leftNum,rightNum)+1;

}

public:

bool isBalanced(TreeNode* root) {

if(getNum(root)==-1){

return false;

}else{

return true;

}

}

};这两道是代码随想录上的经典题,对以后面试也有帮助,望大家掌握

收获:

二叉树节点的深度:指从根节点到该节点的最长简单路径边的条数。 二叉树节点的高度:指从该节点到叶子节点的最长简单路径边的条数。

相关推荐

知了猴出土后多长时间会变成蝉
28365-365.com

知了猴出土后多长时间会变成蝉

12-07 👁️ 326
增长乏力?创造产品和项目需求的6大方法【一杯咖啡谈项目】
和365一样好的平台有什么

增长乏力?创造产品和项目需求的6大方法【一杯咖啡谈项目】

09-23 👁️ 2724
海尔与统帅空调深度对比:哪个品牌更适合你?
和365一样好的平台有什么

海尔与统帅空调深度对比:哪个品牌更适合你?

10-04 👁️ 8918