二叉树的建立,前序遍历,中序遍历,后序遍历
来源:互联网 发布:ubuntu wordpress 安装 编辑:程序博客网 时间:2024/05/16 14:28
前序遍历:先根节点,后左子树,最后右子树。
中序遍历:先左子树,后根节点,最后右子树。
后序遍历:先左子树,后右子树,最后根节点。
由上可以看出,无论哪种遍历方法左节点总是在右节点的前面,如何区分是前中后,主要看根节点位于哪个位置。
上面二叉树前序遍历:2 3 4 5 6 7 8
中序遍历;4 3 5 2 7 6 8
后序遍历:4 5 3 7 8 6 2
#include<stdio.h>#include<stdlib.h>struct treenode{int data;treenode *left;treenode *right;};treenode* createTree();//建立二叉树void showTreeAhead(treenode *root);//前序遍历void showTreeMiddle(treenode *root);//中序遍历void showTreeAfter(treenode *root);//后序遍历void rank(treenode *root);//堆排序int main(){treenode *root;root = createTree();printf("二叉树建立完成\n");printf("前序遍历\n");showTreeAhead(root);printf("\n中序遍历\n");showTreeMiddle(root);printf("\n后序遍历\n");showTreeAfter(root);system("pause");}/*建立二叉树的时候。注意将叶子节点的下面左右节点赋值-1(也就是为NULL)*/treenode* createTree(){int d = 0;treenode *root;scanf_s("%d", &d);if (d > 0){root = (treenode*)malloc(sizeof(treenode));root->data = d;root->left = createTree();root->right = createTree();}else{ root = NULL;}return root;}void showTreeAhead(treenode *root){if (root != NULL){printf("%d ", root->data);showTreeAhead(root->left);showTreeAhead(root->right);}}void showTreeMiddle(treenode *root){if (root != NULL){showTreeMiddle(root->left);printf("%d ", root->data);showTreeMiddle(root->right);}}void showTreeAfter(treenode *root){if (root != NULL){showTreeAfter(root->left);showTreeAfter(root->right);printf("%d ", root->data);}}void rank(treenode *root){}上面中用到了scanf_s因为用的VS编写程序。功能与scanf一样
0 0
- C++数据结构--二叉树的建立,前序遍历,中序遍历和后序遍历
- 二叉树的建立,前序遍历,中序遍历,后序遍历
- 二叉树的建立以及前序遍历、中序遍历、后序遍历
- 20170816_二叉树的建立+前序遍历+中序遍历+后序遍历+层序遍历
- 【原创】二叉树的建立与遍历(前序遍历、中序遍历、后序遍历)
- 二叉树建立,前序遍历,中序遍历,后序遍历 思路
- 二叉树的遍历(前序遍历、中序遍历、后序遍历)
- 二叉树的遍历 前序遍历 中序遍历 后序遍历
- 二叉树的遍历:前序遍历、中序遍历和后序遍历
- 扩展二叉树 建立 以及 前序遍历 中序遍历 后序遍历 的非递归算法
- 编程实现二叉树的建立,前序遍历,中序遍历和后续遍历
- 二叉树的前序遍历,中序遍历,后序遍历以及相互之间的求法
- 通过前序(后序), 中序遍历建立二叉树 求解层次遍历
- 二叉树的遍历,二叉树的创建、前序遍历、中序遍历、后序遍历 (转)
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 二叉树的创建、前序遍历、中序遍历、后序遍历
- 逻辑斯蒂回归3 -- 最大熵模型之改进的迭代尺度法(IIS)
- 实感模拟射击馆的收入会怎么样?
- Xutils3.0请求网络数据工具类
- Lua_第 11 章 数据文件与持久化
- keepalived配置文件详解
- 二叉树的建立,前序遍历,中序遍历,后序遍历
- JAVA Web开发过程中的路径问题
- POJ 1240 Pre-Post-erous!(组合数学+递归)
- 将秒转换为天,小时,分钟,秒。
- 十五、顺序执行动作重复动作
- 在数组中交换变量的陷阱
- 自定义对话框
- adb常用命令整理备忘录
- eclipse中jrebel安装+破解+配置