本文目录一览:
- 1、C语言二叉树求其深度
- 2、C语言二叉树求最大值求指点?
- 3、C语言 这个求二叉树深度的函数的思路是什么 麻烦详细一点
- 4、哪位大侠知道 求二叉树深度的类C语言算法? 谢谢
- 5、C语言中,二叉树的深度指?怎样计算
- 6、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");
}
出处: