目录
以二叉链表作存储的结构,试编写求二叉树叶子结点个数的算法:P225 【1904真题】【1810真题】【1404真题】
二叉树先,中,后序遍历【1710真题】
void preorder (BinTree bt)
{
if(bt!=NULL){
visit(bt); //访问根结点bt
preorder(bt->lchild); //先序遍历左子树
preorder(bt->rchild); //先序遍历右子树
}
}
void inorder (BinTree bt)
{
if(bt!=NULL){
inorder(bt->lchild); //中序遍历左子树
visit(bt); //访问根结点bt
inorder(bt->rchild); //中序遍历右子树
}
}
void postorder (BinTree bt)
{
if(bt!=NULL){
postorder(bt->lchild); //后序遍历左子树
postorder(bt->rchild); //后序遍历右子树
visit(bt); //访问根结点bt
}
}
计算二叉树的高度 P106 【1704真题】
int Height(BinTree bt){
int lh,rh;
if(bt==NULL) return 0;
else
{
lh=Height(bt->lchild);
rh=Height(bt->rchild);
return 1+(lh>rh?lh:rh);
}
}
以二叉链表作存储的结构,试编写求二叉树叶子结点个数的算法:P225 【1904真题】【1810真题】【1404真题】
typedef struct btnode{
DataType data;
struct btnode *lchild,*rchild;
}*BinTree;
int leafnode_num(BinTree bt){
if(bt==NULL) return 0;
else{
if((bt->lchild==NULL)&&(bt->rchild==NULL)) return 1;
else return leafnode_num(bt->lchild)+leafnode_num(bt->rchild);
}
}
设计算法求二叉树的结点的个数
typedef struct btnode{
DataType data;
struct btnode *lchild,*rchild;
}*BinTree;
int node_num(BinTree bt){
if(bt==NULL) return 0;
else{
return node_num(bt->lchild)+node_num(bt->rchild)+1;
}
}
设计算法按先序次序打印二叉树T中叶子结点的值
typedef struct btnode{
int data;
struct btnode *lchild,*rchild;
}*BinTree;
int preorder(BinTree bt){
if(bt!=NULL){
if((bt->lchild==NULL)&&(bt->rchild==NULL))
{
printf("%d",bt->data);
preorder(bt->lchild);
preorder(bt->rchild);
}
}
}
树的存储结构采用孩子兄弟链表,请编写树的按层次遍历算法