二叉树一些基本算法
来源:互联网 发布:esp8266 51单片机例程 编辑:程序博客网 时间:2024/04/28 10:53
一、二叉树存储结构及先序建立
-----二叉树的存储结构-----
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
-----先序建立二叉链表-----
Status CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T==NULL;
else
{
T=(BiTree)malloc(sizeof(BiTNode));
if(!T)
{
printf("error");
exit(0);
}
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return ok;
}
二、二叉树三种递归遍历算法
-----二叉树先序遍历算法-----
void PreOrder(BiTree &T)
{
if(T!=NULL){
cout<<T->data<<endl;
PreOrder(T->lchild);
PreOrder(T->rchild);
}
}
-----二叉树中序遍历算法-----
void InOrder(BiTree &T)
{
if(T!=NULL){
InOrder(T->lchild);
cout<<T->data<<endl;
InOrder(T->rchild);
}
}
-----二叉树后序遍历算法-----
void PostOrder(BiTree &T)
{
if(T!=NULL){
PostOrder(T->lchild);
PostOrder(T->rchild);
cout<<T->data<<endl;
}
}
三、求二叉树深度递归算法
int depth(BiTree root)
{
int ldepth,rdepth;
if(!root)
return 0;
else
{
ldepth=depth(root->lchild);
rdepth=depth(root->rchild);
return ldepth>rdepth?ldepth+1:rdepth+1;
}
}
四、求二叉树叶子节点数
int CountLeaf(BiTree t)
{
int m,n;
if(!T)
return 0;
if(!T->lchild&&!T->rchild)
return 1;
else{
m=CountLeaf(T->lchild);
n=CountLeaf(T->rchild);
return m+n;
}
}
五、子树交换
void Exchange(BiTree T)
{
BiTree p;
if(T){
p=T->lchild;
T->lchild=T->rchild;
T->rchild=p;
Exchange(T->lchild);
Exchange(T->rchild);
}
}
- 二叉树一些基本算法
- 二叉树基本算法
- 二叉树基本算法
- 线索二叉树 基本算法
- 二叉树的基本算法
- 二叉树的基本算法
- 二叉树的一些算法
- 关于二叉树一些算法
- 二叉搜索树的一些基本操作
- 二叉树的一些基本操作
- 二叉树的一些基本运算
- 二叉树的一些基本操作
- 二叉搜索树的一些基本操作
- 二叉树的一些基本操作
- 二叉树的一些基本操作
- 二叉树树的基本算法
- 二叉树的基本遍历算法
- 二叉树的基本算法实现
- 第八周项目1--求简单分段函数的值
- 有限自动机NFA-ε到NFA再到DFA的转换
- Bootstrap 模态窗口实现居中
- OpenCV中IplImage图像格式与BYTE图像数据的转换
- 慕课网高仿微信学习笔记
- 二叉树一些基本算法
- 第八周项目6
- POJ 1731 Orders(全排列)
- 基于分析的amb求值器,及其分析
- java中的数组(六)
- 第3章栈和队列
- COGNOS10的Eclipse远程调试
- c time.h
- HDU ACM 1052