求一个二叉树的深度

求一个二叉树的深度,是这样理解这个问题的。

如果这个棵树为空,那么他的深度为0

如果一个树只有一个节点,那么他的深度为1

如果根节点只有左子,没有右子,那么他的深度为左子树的深度+1

如果根节点只有右子,没有左子,那么他的深度为右子树的深度+1

如果根节点既有左子,又有右子,那么他的深度为左子右子较大的那个深度+1

struct BNode

{

int data;   //数据域

BNode* left;//左子

BNode* right;//右子
}

int TreeDepth(BNode* node)

{

if(node==null)

return 0;

int nLeft=TreeDepth(node->left);

int nRight=TreeDepth(node->right);

return (nLeft>nRight)?nLeft+1:nRight+1;

}

时间: 2024-10-21 16:10:00

求一个二叉树的深度的相关文章

求一个二叉树的深度以及如何判断一个二叉树是一个平衡二叉树

/** * Created by Administrator on 2015/10/10. */public class TreeNode { //树节点的值 private char data; //节点的左子树 private TreeNode leftTree; //节点的右子树 private TreeNode rightTree; public TreeNode(char data,TreeNode leftTree,TreeNode rightTree){ this.data=dat

求一个二叉树中距离最远的两个节点

/*求二叉树中距离最远的两个点 * 基本思路: * 递归计算两棵树的最大高度,设置一个全局变量,距离最远的两个节点element * 其中:在计算左子支,直接刷新上述全局变量,在计算右边子支时,设置两个临时Node变量,变量里的element用于 * 保存右边子支的两个最远距离.根据比较两个距离的大小.其父节点所在的树三个的大小,来重新刷新全局变量. * 一个Trick~:在计算子支的最远距离的时候,因为要和其父节点所在的树比较大小,保存子支的最大距离的点数. */ public class M

递归求取二叉树最小深度和最大深度

public class Binarytreedept { /*  * 输出二叉树最小深度     * 核心思想:根节点到达最近的叶子节点的路径长度.  * 1.当根为空时,输出0.  * 2.当左子树为空时,输出右子树深度+1.  * 3.当右子树为空时,输出左子树深度+1.  * 4.以上条件都不满足时,输出min(左子树深度,右子树深度)+1.  *   * 输出二叉树最大深度   * 核心思想:根节点到达最远的叶子节点的路径长度.  * 1.如果二叉树为空,则深度为0;  * 2.如果不

[华为机试练习题]42.求二叉树的深度和宽度

题目 题目标题: 求二叉树的宽度和深度 给定一个二叉树,获取该二叉树的宽度和深度. 例如输入 a / b c / \ / d e f g 返回3. 接口说明 原型: int GetBiNodeInfo(BiNode &head, unsigned int *pulWidth, unsigned int *pulHeight) 输入参数: head 需要获取深度的二叉树头结点 输出参数(指针指向的内存区域保证有效): pulWidth 宽度 pulHeight 高度 返回值: 0 成功 1 失败或

求二叉树的深度和宽度 ----我对默认构造函数的理解

////计算二叉树的深度和宽度:深度:层数   宽度:各层最大节点数 ///关于二叉树问题,一般都要用到递归的方法. ////算法:首先构造二叉树节点的结构:要创建二叉树,创建的过程,使用递归算法:其次,计算二叉树深度,也要递归:最难的一点是计算求出层次中的最大节点数,使用队列的方法 #include <iostream>#include <queue>#include <tchar.h>using namespace std;struct BTNode{ char m

剑指offer38:输入一棵二叉树,求该树的深度

1 题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度. 2 思路和方法 深度优先搜索,每次得到左右子树当前最大路径,选择其中较大者并回溯.int len = left>right?left+1:right+1;    // 当前最大路径 3 C++ 核心代码 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNode *

求二叉树的深度 python

题目描述 输入一棵二叉树,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.解题思路 两种解法,一种是第一时间的思路,即获得根节点到每个叶节点的深度,取其中最长的返回: class Solution:    def __init__(self):        self.maxDeep = 0        self.curDeep = 0 def TreeDepth(self, pRoot):        if not pRoot:   

PTA 求二叉树的深度

6-7 求二叉树的深度 (6 分) 本题要求实现一个函数,可返回二叉树的深度. 函数接口定义: int Depth(BiTree T); T是二叉树树根指针,函数Depth返回二叉树的深度,若树为空,返回0. 裁判测试程序样例: #include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNode *lchild, *r

二叉树各种相关操作(建立二叉树、前序、中序、后序、求二叉树的深度、查找二叉树节点,层次遍历二叉树等)(C语言版)

将二叉树相关的操作集中在一个实例里,有助于理解有关二叉树的相关操作: 1.定义树的结构体: 1 typedef struct TreeNode{ 2 int data; 3 struct TreeNode *left; 4 struct TreeNode *right; 5 }TreeNode; 2.创建根节点: 1 TreeNode *creatRoot(){ 2 TreeNode * root =(TreeNode *)malloc(sizeof(TreeNode)); 3 if(NULL=