您的位置:

c语言求二叉树最大深度,c语言求二叉树高度

本文目录一览:

C语言二叉树求其深度

建议楼主到这里看看,其实每一层都是有一个return函数,不知道楼主注意到了没有,其次,reutrn函数初始返回0, 接着有 return (mn?m:n)+1;也就是一个一个一层一层加上去,所以会返回,而最后返回的就是答案

C语言二叉树求最大值求指点?

问题出在max这个变量上。临时变量么有返回。可以将这个函数

int getmax(btnode*t,int max)

{

if(t!=NULL)

{

if(maxt-data)

          max=t-data;

      getmax(t-lchild,max);

getmax(t-rchild,max);

}

return max;

}

修改为:

int getmax(btnode *t, int* max)

{

    if(t != NULL)

    {

        if(*max  t-data)

            *max = t-data;

        getmax(t-lchild, max);

        getmax(t-rchild, max);

    }

    return *max;

}

另外,你要注意你的编码格式了。需要按照一定的格式来编写,这样可以让别人看的时候更清晰。

C语言 这个求二叉树深度的函数的思路是什么 麻烦详细一点

这是递归函数

很容易理解的

二叉树深度就是左右子树深度的最大者+1

可见图片的代码是错的

最后的if语句if(depleft)

应该改为if(depleftdepright)

才对

哪位大侠知道 求二叉树深度的类C语言算法? 谢谢

主方法调用RootFirst(root,0);即可,g_nMax

即为最终的树的深度。

int

g_nMax

=

0;

voild

RootFirst(TreeNode

*p,int

nLevel)

{

if

(null

==

p-left

null

==

p-right)

//当前为叶子节点

{

if

(g_nMax

nLevel)

{

g_nMax

=

nLevel;

return;

}

}

if(null

!=

p-left

)

{

RootFirst(p-left,nLevel+1);//遍历左子树

}

if(null

!=

p-right)

{

RootFirst(p-right,nLevel+1);//遍历右子树

}

}

C语言中,二叉树的深度指?怎样计算

二叉树中结点的最大层数称为二叉树的深度。计算:就是结点最大层数的个数,这还用计算,一看就知道。

C语言二叉树的深度指什么?怎么求?

从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。

解体思路:

1.如果根节点为空,则深度为0,返回0,递归的出口。

2.如果根节点不为空,那么深度至少为1,然后我们求他们左右子树的深度,

3.比较左右子树深度值,返回较大的那一个

4.通过递归调用

#includeiostream

#includestdlib.h

using namespace std;

struct BinaryTreeNode

{

    int m_nValue;

    BinaryTreeNode* m_pLeft;

    BinaryTreeNode* m_pRight;

};

//创建二叉树结点

BinaryTreeNode* CreateBinaryTreeNode(int value)

{

    BinaryTreeNode* pNode=new BinaryTreeNode();

    pNode-m_nValue=value;

    pNode-m_pLeft=NULL;

    pNode-m_pRight=NULL;

    return pNode;

}

//连接二叉树结点

void ConnectTreeNodes(BinaryTreeNode* pParent,BinaryTreeNode* pLeft,BinaryTreeNode* pRight)

{

    if(pParent!=NULL)

    {

        pParent-m_pLeft=pLeft;

        pParent-m_pRight=pRight;

    }

}

//求二叉树深度

int TreeDepth(BinaryTreeNode* pRoot)//计算二叉树深度

{

    if(pRoot==NULL)//如果pRoot为NULL,则深度为0,这也是递归的返回条件

        return 0;

    //如果pRoot不为NULL,那么深度至少为1,所以left和right=1

    int left=1;

    int right=1;

    left+=TreeDepth(pRoot-m_pLeft);//求出左子树的深度

    right+=TreeDepth(pRoot-m_pRight);//求出右子树深度

    return leftright?left:right;//返回深度较大的那一个

}

void main()

{

//            1

//         /      \

//        2        3

//       /\         \

//      4  5         6

//           /

//        7

    //创建树结点

    BinaryTreeNode* pNode1 = CreateBinaryTreeNode(1);

    BinaryTreeNode* pNode2 = CreateBinaryTreeNode(2);

    BinaryTreeNode* pNode3 = CreateBinaryTreeNode(3);

    BinaryTreeNode* pNode4 = CreateBinaryTreeNode(4);

    BinaryTreeNode* pNode5 = CreateBinaryTreeNode(5);

    BinaryTreeNode* pNode6 = CreateBinaryTreeNode(6);

    BinaryTreeNode* pNode7 = CreateBinaryTreeNode(7);

    //连接树结点

    ConnectTreeNodes(pNode1, pNode2, pNode3);

    ConnectTreeNodes(pNode2, pNode4, pNode5);

    ConnectTreeNodes(pNode3, NULL,   pNode6);

    ConnectTreeNodes(pNode5, pNode7,  NULL );

    int depth=TreeDepth(pNode1);

    coutdepthendl;

    system("pause");

}

出处:

c语言求二叉树最大深度,c语言求二叉树高度

2022-11-25
c语言二叉树的度,c++二叉树的深度

2023-01-05
c语言八叉树,二叉树构造c语言实现

2022-11-26
二叉树的c语言程序求教,c语言创建二叉树代码

2023-01-06
c语言深度优先二叉树遍历,深度优先遍历类似于二叉树的层次遍历

本文目录一览: 1、急急急!求C语言的数据结构二叉树递归遍历程序! 2、C语言二叉树的遍历。 3、C语言数据结构“遍历二叉树” 4、二叉树的创建和遍历 急急急!求C语言的数据结构二叉树递归遍历程序!

2023-12-08
二叉树按层输出c语言,C语言二叉树怎么输入数据

2022-11-24
层次遍历构建二叉树c语言,c语言二叉树的创建与遍历

2023-01-06
数据结构c语言二叉树的查找,数据结构c语言版二叉树代码

2022-11-22
用c语言将二叉树转换为双向链表,二叉树转化为二叉链表

2022-11-29
c语言二叉排序,c语言创建排序二叉树

2022-12-02
输出二叉树的层次遍历c语言,遍历二叉树C语言

2023-01-04
二叉树的前序遍历c语言,二叉树前序遍历c语言代码

2022-11-25
普通树的深度遍历c语言,树的层次遍历c语言

2023-01-04
c语言层序遍历创建二叉树,二叉树的建立与遍历完整代码C语言

2022-11-23
c语言深度解释,C++基础与深度解析

2022-11-28
判断两个二叉树是否相等c语言,判断两个二叉树是否相等c语言是

2022-11-24
二叉树golang,二叉树的度

2022-11-28
以图判树c语言,c语言关于树的算法

2023-01-05
后序遍历二叉树的递归算法c语言,实现二叉树的后序遍历的非递归

2023-01-03
二本c语言报名,二级C语言报名

2023-01-04