首页 > 代码库 > 二叉树基本操作--创建,三种遍历,叶子节点
二叉树基本操作--创建,三种遍历,叶子节点
虽然二叉树的操作很常见,但是认真写写熟悉很重要,特别是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 =http://www.mamicode.com/ 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;}
二叉树基本操作--创建,三种遍历,叶子节点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。