二叉树学习
一、二叉树的前中后序递归遍历及应用(求树深度)
#include<stdio.h>
#inlcude<stdlib.h>
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序遍历
void PreOrder(BiTree T){
if(T!=NULL){
visit(T);//访问根节点
PreOrder(T.lchild);//递归遍历左子树
PreOrder(T.rchild);//递归遍历右子树
}
}
//中序遍历
void InOrder(BiTree T){
if(T!=NULL){
InOrder(T.lchild);//递归遍历左子树
visit(T);//访问根节点
InOrder(T.rchild);//递归遍历右子树
}
}
//后序遍历
void PostOrder(BiTree T){
if(T!=NULL){
PostOrder(T.lchild);//递归遍历左子树
PostOrder(T.rchild);//递归遍历右子树
visit(T);//访问根节点
}
printf("/n");
}
//访问结点函数
void visit(BiTree T){
printf("%d->",T.data);//打印结点数据
}
//求树的深度
int treeDepth(BiTree T){
if(T==NULL){
return 0;
}else{
int l=treeDepth(T.lchild);
int r=treeDepth(T.rchild);
//树的深度=Max(左子树深度,右子树深度)+1
return l>r?l+1:r+1;
}
}
int main(){
}
二、二叉树的前中后序非递归遍