二叉树基本操作--创建,三种遍历,叶子节点
2016-10-07 21:33
316 查看
虽然二叉树的操作很常见,但是认真写写熟悉很重要,特别是typedef,
CreateBiTree(BiTNode** T)指针的操作等等,还有就是创建方法,去实际输入值就知道其中的妙处,为-1时为空节点。
#include <iostream> using namespace std; //节点的定义 typedef struct BTNode { int data; BTNode* rChild; BTNode* lChild; }BiTNode, *BiTree; //二叉树的创建,先序创建二叉树 int CreateBiTree(BiTNode** T) { int ch; cin >> ch; if (ch==-1) { *T = nullptr; return 0; } else { //*T = new BiTNode(); *T = (BiTNode*)malloc(sizeof(BiTNode)); if (T==nullptr) { cout << "failed!\n"; return 0; } else { (*T)->data = ch; cout << "输入左子节点:"; //cin >> ch; CreateBiTree(&(*T)->lChild); cout << endl; cout << "输入右子节点:"; //cin >> ch; CreateBiTree(&(*T)->rChild); } } return 1; } //先序遍历二叉树 void PreOrderBiTree(BiTNode* T) { if (T == nullptr) { return; } else { cout << T->data<<" "; PreOrderBiTree(T->lChild); PreOrderBiTree(T->rChild); } } //中序遍历二叉树 void InOrderBiTree(BiTNode* T) { if (T == nullptr) { return; } else { InOrderBiTree(T->lChild); cout << T->data << " "; InOrderBiTree(T->rChild); } } //后续遍历二叉树 void PostOrderBiTree(BiTNode* T) { if (T == nullptr) { return; } else { PostOrderBiTree(T->lChild); PostOrderBiTree(T->rChild); cout << T->data << " "; } } //树高.... //叶子节点个数 int LeafCount(BiTNode* T) { static int count = 0; if (T!=nullptr) { if (T->lChild==nullptr&&T->rChild==nullptr) { count++; } LeafCount(T->lChild); LeafCount(T->rChild); } return count; } //客户端测试 int main() { BiTNode* T; int leafCount = 0; cout << "请输入第一个节点的值,-1表示没有节点:\n"; CreateBiTree(&T); cout << "先序遍历二叉树:"; PreOrderBiTree(T); cout << endl; cout << "中序遍历二叉树:"; InOrderBiTree(T); cout << endl; cout << "后序遍历二叉树: "; PostOrderBiTree(T); cout << endl; leafCount = LeafCount(T); cout << "叶子节点的个数:" <<leafCount<< endl; return 0; }
相关文章推荐
- 二叉树基本操作--创建,三种遍历,叶子节点
- 二叉树的创建、相关操作、递归和非递归式实现三种遍历
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树的基本操作(创建、递归和非递归遍历、求深度、求叶子数)
- C++递归创建、非递归遍历二叉树的基本操作
- C二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树的基本操作精集(创建、遍历、求深度结点以及叶子结点个数)
- C语言实现二叉树的基本操作---创建、遍历、求深度、求叶子结点
- 二叉树与其基本递归操作:创建、遍历、特征量计算等
- PHP数据结构之九 PHP储存二叉树,二叉树的创建与二叉树的基本操作 遍历二叉树算法
- 数据结构(十二) 二叉树的基本操作 --- 创建一个二叉树 前中后序遍历二叉树
- <二叉树的基本操作(有层次遍历)>
- 二叉树的创建及一些基本操作
- 二叉树的先序、中序、后序遍历等基本操作c++实现
- C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
- 二叉树的构建,遍历等基本操作
- 数据结构(C语言实现) - 二叉树的基本操作(建立,遍历,结点数,叶子结点数,高度,按树状打印,输出叶子结点等)
- 二叉树学习总结:二叉树的基本操作、遍历二叉树、中序线索化二叉树、中序遍历线索二叉树
- C预言的二叉树的创建和三种遍历方式
- C语言二叉树创建、遍历、深度、叶子节点