二叉树的非递归建立
来源:互联网 发布:知金教育是做什么的 编辑:程序博客网 时间:2024/04/28 01:50
二叉树的非递归建立
思想:非递归建立一个二叉树,要做的就是不断的往一个树里面去插入一个新的结点 即插入法建立二叉树
实现步骤:
第一步:申请一个结点空间,并进行初始化,判断树是否为空,如果为空,返回新结点,则已经新建了一棵树
第二步:如果不为空,循环遍历,如果插入的值比左孩子孩子小,那么一直往左边找,如果大于右孩子,那么往右边开始找,最后插入即可
第三步:循环插入即可建立一个二叉树;
源代码:
#include<iostream>#include<cstdio>#include<cstdlib>using namespace std;typedef struct Node{ int data; Node *lch, *rch;}BiNode, *BiTree;BiTree Insert(BiTree root,int key){ BiTree pa, ptr; BiTree p = root; ptr = (BiTree)malloc(sizeof(BiNode)); ptr->data = key; ptr->lch = NULL; ptr->rch = NULL; pa = NULL; if(p == NULL) { return ptr; } else { while(p != NULL) { pa = p; if(key <= p->data) { p = p->lch; } else { p = p->rch; } } if(key <= pa->data) { pa->lch = ptr; } else { pa->rch = ptr; } } return root;}BiTree Creat_Tree(){ BiTree root = NULL; int data; scanf("%d", &data); while(data != 0) { root = Insert(root, data); scanf("%d", &data); } return root;}void PreOrder(BiTree root){ if(root != NULL) { printf("%d ", root->data); PreOrder(root->lch); PreOrder(root->rch); }}void InOrder(BiTree root){ if(root !=NULL) { InOrder(root->lch); printf("%d ",root->data); InOrder(root->rch); }}void PostOrder(BiTree root){ if(root != NULL) { PostOrder(root->lch); PostOrder(root->rch); printf("%d ", root->data); }}int main(){ BiTree root ; root = Creat_Tree(); PreOrder(root); printf("\n"); InOrder(root); printf("\n"); PostOrder(root); return 0;}
- 二叉树的非递归建立
- 二叉树的非递归建立
- 二叉树的建立和遍历(递归、非递归)
- 二叉树建立、递归、非递归遍历
- 注释:二叉树的递归建立+二叉树非递归建立
- c++二叉树的非递归建立和遍历
- 二叉树的非递归建立(一)
- 二叉树的非递归建立(二)
- 非递归建立二叉树 c
- 非递归队列方法建立二叉树
- 树的非递归建立
- 递归和非递归方法建立二叉树
- 二叉树建立以及递归、非递归遍历
- 二叉树的建立及层次遍历及前中后序遍历递归与非递归的实现
- 二叉树的建立,前中后序遍历的递归版本和非递归版本,层序遍历
- 二叉树的递归建立
- 二叉树的递归建立
- 二叉树的递归建立
- 电信天翼免费短信验证码的发送
- LayoutInflater作用及使用
- 分布式系统通信
- 小码农大梦想的实现之旅 - 11月份
- 遮罩层 js
- 二叉树的非递归建立
- Ubuntu默认启动到字符界面
- jQueryMobile的(十四) 表单 、文本输入、拖动滑动、切换开关
- $(document).ready()与window.onload的区别
- ML及AI资源索引
- android 4.0 StatusBar 架构
- 轻扫(swipe)手势
- 一个百度知道
- UIScrollView图文混排仿网易新闻