c语言求二叉树的深度函数 计算二叉树的深度c语言

C语言二叉树求其深度建议楼主到这里看看,其实每一层都是有一个return函数,不知道楼主注意到了没有,其次,reutrn函数初始返回0,接着有 return (mn?m:n) 1;也就是一个一个一层一层加上去,所以会返回,而最后返回的就是答案
哪位大侠知道 求二叉树深度的类C语言算法? 谢谢主方法调用RootFirst(root,0);即可 , g_nMax
即为最终的树的深度 。
int
g_nMax
=
0;
voild
RootFirst(TreeNode
*p,int
nLevel)
【c语言求二叉树的深度函数 计算二叉树的深度c语言】{
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语言二叉树的深度指什么?怎么求?从根节点到叶子结点一次经过的结点形成树的一条路径 , 最长路径的长度为树的深度 。根节点的深度为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=https://www.04ip.com/post/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
///\
//23
///\\
//456
///
//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语言的介绍到此就结束了 , 不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读