二叉树的创建与遍历
来源:互联网 发布:武力统一台湾后果知乎 编辑:程序博客网 时间:2024/06/08 02:05
1、定义二叉树
typedef struct node{ struct node *leftChild; struct node *rightChild; int data;}NODE, *PNODE;2、创建节点
PNODE createNode(int i){ PNODE* q = new NODE; q->leftChild = NULL; q->rightChild = NULL; q->data = i; return q;}3、创建二叉树
PNODE createBiTree(){ PNODE *p[N] = {NULL}; int i; for(i = 0; i < N; i++) p[i] = createNode(i + 1); for(i = 0; i < N/2; i++) { p[i]->leftChild = p[i * 2 + 1]; p[i]->rightChild = p[i * 2 + 2]; } return p[0];}4、访问节点
int visit(PNODE T){ return T->data;}5、先序遍历
void preOrderTraverse(PNODE T){ if(T) { cout << visit(T) << " "; preOrderTraverse(T->leftChild); preOrderTraverse(T->rightChild); }}
6、中序遍历
void inOrderTraverse(PNODE T){ if(T) { inOrderTraverse(T->leftChild); cout << visit(T) << " "; inOrderTraverse(T->rightChild); }}7、后续遍历
void postOrderTraverse(PNODE T){ if(T) { postOrderTraverse(T->leftChild); postOrderTraverse(T->rightChild); cout << visit(T) << " "; }}
8、main函数
int main(){ BiTree T = createBiTree(); cout << "先序遍历:" << endl; preOrderTraverse(T); cout << endl << endl; cout << "中序遍历:" << endl; inOrderTraverse(T); cout << endl << endl; cout << "后序遍历:" << endl; postOrderTraverse(T); cout << endl << endl; return 0;}9、测试结果
0 0
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历(递归)
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与层次遍历
- 二叉树的创建与递归遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历
- 二叉树的创建与遍历
- 非二叉树的创建与遍历
- 二叉树的创建与遍历
- 二叉树的遍历与创建
- 二叉树的创建与遍历1
- 【Spring AOP】学习记录(一)
- C++学习笔记(七)--操作符重载 友元函数 类的继承 访问控释protected
- ALSA声卡笔记4-----体验声卡
- java中常见的几种排序方法
- Windows上python版本使用管理
- 二叉树的创建与遍历
- HDU2112-HDU Today
- Riding The Fences_usaco3.3_dfs
- Microsoft Office Professional Plus 2010在安装中出错 解决办法 安装office2010出错
- Ruby 语言要点
- Android系统时间
- play框架2.5.6教程——设置你喜欢的IDE
- My tips----搭建一个自己喜欢的风格桌面
- 常用集合※【HashMap(二)】