以二叉链表作存储结构,试编写求二叉树高度的算法

以二叉链表作存储结构,试编写求二叉树高度的算法,谢谢了

第1个回答  2011-12-22
主方法调用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);//遍历右子树
}
}本回答被提问者采纳

以二叉链表作存储结构,试编写求二叉树高度的算法
主方法调用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 ) { Roo...

以二叉链表为存储结构,写出求二叉树高度和宽度的算法
以二叉链表为存储结构,分别写出求二叉树高度及宽度的算法。所谓宽度是指在二叉树的各层上,具有结点数最多的那一层上的结点总数。标准答案:①求树的高度 思想:对非空二叉树,其深度等于左子树的最大深度加1。Int Depth(BinTree T){ int dep1,dep2;if(T==Null)return(0);else { dep1=Dept...

设二叉树采用二叉链表结构存储,试设计算法求出二叉树深度。
int TreeDepth(NODE *bt)\/* 求树的深度 *\/ { int dep1,dep2;if(bt==NULL) return 0;else { dep1=TreeDepth(bt->lchild);dep2=TreeDepth(bt->rchild);if(dep1>dep2) return count=dep1+1;else return count=dep2+1;} }

已知二叉树采用链表存储结构,根结点指针为T,请写出计算二叉树中度为2...
采用深度或者广度遍历就可以,分别采用栈或者队列结构。对于访问到的每个节点,如果度为2,就是所求的。比如用栈的话 push(ST,root)while(not empty(ST)){ node=pop(ST)if(node->left)push(ST,node->left)if(node->right)push(ST,node->right)} 上面的伪代码实际上就是图的深度遍历,二叉树...

已知一棵二叉树是以二叉链表的形式存储的求出以T为根的子树的结点个数...
已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下:structnode{intdata;structnode*left;structnode*right;};要求写出2个具有下面功能的算法:①、求出以T为根的子树的结... 已知一棵二叉树是以二叉链表的形式存储的,其结点结构说明如下:struct node{int data;struct node * left;struct node * right...

假设二叉树以二叉链表作为存储结构,试设计一个计算二叉树叶子结点树的...
1、首先要定义两个类:结点类和二叉树类。2、二叉树类的组成:建立树的函数、遍历函数、删除函数。求结点数函数。3、采用递归的思想,遇到标识符表示该结点为空,否则开辟空间创建新结点,同时调用递归开辟左结点和右结点。4、前序遍历函数。5、删除函数的思路:如果当前结点不为空,采用递归访问左结点...

设二叉树的存储结构为二叉链表,编写有关二叉树的递归算法:
7功能参考求广度的实现】9功能参考6功能,用前序遍历也可以 10功能也参考求广度的方法 程序:include <stdio.h> include <stdlib.h> include <malloc.h> include define NUM_NODE12 define MOST_DEPTH 10 typedef struct BiTree{ int data;BiTree *lchild;BiTree *rchild;}BiTree;typedef str...

以二叉链表为存储结构,分别写出求二叉树结点总数及叶子总数的算法...
{ intnum1,num2;if(root==Null)return(0);else if(root->lchild==Null&&rooot->rchild==Null)return(1);else { num 1=CountNode(root->lchild);num 2=CountNode(root->rchild);return(num1+num2+!);} } (2)计算叶子总数 int CountLeafs(BinTree*root){ intnum1,num2;if(roo...

...树是否为二叉排序树的算法,设此二叉树以二叉链表作存储结构...
a=当前节点是否为排序树,是为1,不是为0 f(x)=1 当x为叶节点 f(x)= a&&f(x->lchid)&&f(x-rchild) 当x非叶节点 --- int IsAVTree(BiTree t){ int a=1;if(t->Child==NULL&&t->Rchild==NULL) return 1; \/\/叶子节点判断 if((t->Lchild->data>t->data)||(t->Rch...

运用C++如何使用二叉链表存储二叉树,遍历输出叶子节点路径,递归输出...
构造的二叉树结构如下:运行结果如下:代码如下:include <iostream>#include <vector>using namespace std;typedef struct tnode \/\/定义树节点结构{int val;tnode* left;tnode* right;tnode(int x=0):val(x),left(NULL),right(NULL){}\/\/默认构造函数}TreeNode,*pTreeNode;void getPath(Tree...

相似回答