二叉树的递归创建和遍历
来源:互联网 发布:mac terminal 指令 编辑:程序博客网 时间:2024/06/05 17:08
图文均来自百度搜索
#include <iostream> using namespace std;struct BiTNode { char data; struct BiTNode *lchild, *rchild;//左右孩子 };BiTNode*T;void CreateBiTree(BiTNode* &T);void Inorder(BiTNode* &T);void PreOrderTraverse(BiTNode* &T);void Posorder(BiTNode* &T);//===========================================主函数 int main() { cout << "创建一颗树,其中A->Z字符代表树的数据,用“#”表示空树:" << endl; CreateBiTree(T); cout << "先序递归遍历:" << endl; PreOrderTraverse(T); cout << endl; cout << "中序递归遍历:" << endl; Inorder(T); cout << endl; cout << "后序递归遍历:" << endl; Posorder(T); cout << endl; return 1;}//=============================================先序递归创建二叉树树 void CreateBiTree(BiTNode* &T) { //按先序输入二叉树中结点的值(一个字符),空格字符代表空树, //构造二叉树表表示二叉树T。 char ch; if ((ch = getchar()) == '#')T = NULL;//其中getchar()为逐个读入标准库函数 else { T = new BiTNode;//产生新的子树 T->data = ch;//由getchar()逐个读入来 CreateBiTree(T->lchild);//递归创建左子树 CreateBiTree(T->rchild);//递归创建右子树 }}//CreateTree //===============================================先序递归遍历二叉树 void PreOrderTraverse(BiTNode* &T) { //先序递归遍历二叉树 if (T) {//当结点不为空的时候执行 cout << T->data; PreOrderTraverse(T->lchild);// PreOrderTraverse(T->rchild); } else cout << "";}//PreOrderTraverse //================================================中序遍历二叉树 void Inorder(BiTNode* &T) {//中序递归遍历二叉树 if (T) {//bt=null退层 Inorder(T->lchild);//中序遍历左子树 cout << T->data;//访问参数 Inorder(T->rchild);//中序遍历右子树 } else cout << "";}//Inorder //=================================================后序递归遍历二叉树 void Posorder(BiTNode* &T) { if (T) { Posorder(T->lchild);//后序递归遍历左子树 Posorder(T->rchild);//后序递归遍历右子树 cout << T->data;//访问根结点 } else cout << "";}
前序遍历:
访问根结点,前序遍历左子树,前序遍历右子树 。
中序遍历:
中序遍历左子树,访问根结点,中序遍历右子树,我觉得这个投影法可以参考,方法如下:
后序遍历:
后序遍历左子树,后序遍历右子树,访问根结点
0 0
- 二叉树的递归创建和遍历
- 二叉树的创建和递归遍历
- 二叉树的创建和递归遍历
- 二叉树递归创建和递归遍历
- 二叉树创建、遍历的递归和非递归实现
- 二叉树的创建及递归和非递归遍历
- 二叉树的创建,递归和非递归遍历
- 二叉树的创建和递归与非递归遍历
- java之二叉树的创建和递归遍历
- 二叉树的先序递归创建和遍历
- 二叉树的创建和递归遍历和非递归遍历
- 二叉树的创建,递归遍历,非递归遍历
- 二叉树的创建,递归遍历以及非递归遍历
- 二叉树的创建与遍历(递归)
- 二叉树的递归创建&遍历
- 二叉树的创建与其递归遍历
- 二叉树的创建与递归遍历
- 二叉树的创建遍历 递归实现
- Git中的分支(branch)概述
- Handler机制
- android中几种数据存储方式
- caffe diff_->cpu_data()函数解读(涉及到SyncedMemory类)
- *[lintcode] Integer to Roman 整数转罗马数字
- 二叉树的递归创建和遍历
- 数据结构(5)—— 链表、二叉树代码重构实现
- verilog-不可综合语句-总结-汇总
- opencv3.0学习笔记【10/8】
- 逆序数
- Identifiers Characters
- 不容错过这十款 GNOME Shell 扩展
- Spring 配置使用 - Bean 生命周期
- javascript复习(关于判断)