二叉树的建立与三种遍历

树是一种数据结构,为什么叫它“树”,因为它倒过来就是一棵树

根在上,而叶在下

 

其概念主要有根、父、子、深、叶等,

如上图:A为这棵树的根

    B为D的父,而D则为B的子

    E、F、G互为兄弟,

    D也可以叫叶

    这也是一棵深度为2的数 ps:A节点为深度0

所谓的N叉树即它每个(父)节点下有N个(子)节点

= =一般常用的树为二叉树,我就先试着学习学习了

下面代码:

 1 #include <iostream>
 2 #include <cstdio>
 3 using namespace std;
 4 
 5 typedef struct node{
 6     node *left;
 7     node *right;
 8     char date;
 9     //node(){left=right=NULL;}
10     //node(char &val){date=val,left=right=NULL;}//俩构造函数
11 }Bitnode,*tree;//- -这里还是有点没弄懂,貌似是弄了个指针可以指向自己
12 
13 void createBitree(tree &T)//创建二叉树,应该可以改成循环,不带输入的那种
14 {
15     char c;
16     cin>>c;
17     if(c=='#')
18         T=NULL;
19     else
20     {
21         T=new node;
22         T->date=c;
23         createBitree(T->left);
24         createBitree(T->right);
25     }
26 }
27 void PreTree(tree &T)//先序遍历
28 {
29     if(T)
30     {
31         printf("%c\n",T->date);
32         PreTree(T->left);
33         PreTree(T->right);
34     }
35 }
36 
37 void InTree(tree &T)//中序遍历
38 {
39     if(T)
40     {
41         InTree(T->left);
42         printf("%c\n",T->date);
43         InTree(T->right);
44     }
45 }
46 
47 void postTree(tree &T)//后序遍历
48 {
49     if(T)
50     {
51         postTree(T->left);
52         postTree(T->right);
53         printf("%c\n",T->date);
54     }
55 }
56 
57 
58 int main()
59 {
60     tree T;
61     createBitree(T);
62     //InTree(T);
63     PreTree(T);
64     return 0;
65 }

 

关于createtree()函数吧,当你输入的叶的值均为'#'即停止输入,一开始我还以为这玩意无限输入……嗯,还得好好消化消化

 

以上为我本次关于树的学习

          2016.4.18

 

转载于:https://www.cnblogs.com/byzsxloli/p/5405475.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue中如何设置和清除定时器setInterval

data中生明定时器 方法里使用和清除定时器

register_sysctl_table实现内核数据交互

Sysctl是一种用户应用来设置和获得运行时内核的配置参数的一种有效方式&#xff0c;通过这种方式&#xff0c;用户应用可以在内核运行的任何时刻来改变内核的配置参数&#xff0c;也可以在任何时候获得内核的配置参数。通常&#xff0c;内核的这些配置参数也出现在proc文件系统…

VMware10中安装Mac10.9.3

教程网上确实有&#xff0c;我主要参考这个&#xff1a;http://bbs.pcbeta.com/viewthread-1418055-1-1.html 但是我按它的步骤&#xff0c;用我自己下载的mac os x 10.9.3原版.dmg在启动系统时就是会失败&#xff0c;我试过提取里面的InstallESD.dmg(取了2次&#xff0c;第一…

cisco 交换机通过console 导入 IOS

准备说明&#xff1a; 电脑上安装有 SecureCRT 软件 导入 IOS&#xff1a; 第一步&#xff1a;使用 SecureCRT 连接上交换机。进入rommon 模式&#xff08;CtrlBreak组合键&#xff09; 第二部&#xff1a;设置波特率为115200.调整波特率&#xff0c;可以大大减少灌IOS的时间&a…

localStorage.getItem 往浏览器里面储存数据到本地localStorage

借鉴https://blog.csdn.net/aaa333qwe/article/details/79025336 往浏览器里面储存数据 localStorage.setItem(‘todos’, JSON.stringify(value)) 读取 const list JSON.parse(localStorage.getItem(‘todos’)) || []

SchemaSpy:数据库构架文档生产器,以及该软件的部分缺陷修改。提供工具包下载...

&#xff08;一&#xff09;SchemaSpy 官方网站&#xff1a;http://schemaspy.sourceforge.net/ 该软件名称的官方解释为&#xff1a;Graphical Database Schema Metadata Browser 我的压缩包&#xff08;SchemaSpy_5.0.0_工具包&#xff09;&#xff1a; SchemaSpy_5.0.0.jar&…

container_of分析

1.container_of宏 1> Container_of在Linux内核中是一个常用的宏&#xff0c;用于从包含在某个结构中的指针获得结构本身的指针&#xff0c;通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口&#xff1a;container_of(ptr, type, mem…

ZOJ 1450 Minimal Circle 点集的最小圆覆盖

From: http://blog.csdn.net/zmx354/article/details/17076267 给定一个点集&#xff0c;求出能覆盖点集内所有点的半径最小的圆。包含点在圆上的情况。个人感觉算是比较麻烦的计算几何模板了。 在网上看了很多解题&#xff0c;大多数都摘抄自《求一个包含点集所有点的最小圆…

poj1050最大子矩阵和

这篇是看了别人的报告写的&#xff0c;就当是屡屡思路好了. 题目大意。给定一个n阶矩阵&#xff08;方阵&#xff09;,每一个元素中存在一个数字.任务就是求出一个最大的子矩阵使得矩阵元素之间的和是最大的. n100; 1.矩阵A[m][n]的和能够直接 sumA[i][j] ( i 0 to n-1 j0 to …

vue里写三元判断绑定class和style

<a-select:disabled"(dataBaseId ? false : true)"style"width: 100%"showSearchplaceholder"请输入选择表名"v-decorator"[tableId,{rules: [{ required: false, message: 请输入选择表名}]}]":defaultActiveFirstOption"fa…

命令行选项解析函数(C语言):getopt()和getopt_long()

上午在看源码项目 webbench 时&#xff0c;刚开始就被一个似乎挺陌生函数 getopt_long() 给卡住了&#xff0c;说实话这函数没怎么见过&#xff0c;自然不知道这哥们是干什么的。于是乎百度了一番&#xff0c;原来是处理命令行选项参数的&#xff0c;的确&#xff0c;正规点的大…

centos5.3搭建安全高效的LNMP服务器

操作系统基于centos 5.3 #!/bin/bash # BY kerryhu # QQ:263205768 # MAIL:king_819163.com # BLOG:http://kerry.blog.51cto.com # Please manual operation yum of before Operation..... # yum install ntp vim-enhanced gcc gcc-c flex bison autoconf \ # automake …

夺命雷公狗ThinkPHP项目之----企业网站2之数据库的快速设计

我们在一个项目的时候&#xff0c;花费最多事件的估计还是数据库的时间了&#xff0c;我们的数据库暂时就这样设计好了&#xff1a; 暂时我们的数据库就这样设计好了用下先,建好后如下所示&#xff1a; 转载于:https://www.cnblogs.com/leigood/p/5411017.html

vue监听对象某一个属性

watch: {uploadObj: {//监听对象deep: true,handler: function(value) {if (!value.receiver && !value.receiveBastionIds) {this.userArrShow true;this.machineSelectShow true;this.$message.warning("接收人及接收堡垒机至少选择一项&#xff0c;请重新填写…

find 命令搜索符号链接文件夹的方法

From: http://blog.csdn.net/caspiansea/article/details/7456048 find 命令默认情况下&#xff0c;不会到符号链接指向的文件夹下面搜索匹配的文件。 要想达到此目的&#xff0c;可以使用如下的方法&#xff1a; [plain] view plaincopyprint?find -L dirname -name "…

typedef和define具体的详细区别

1) #define是预处理指令&#xff0c;在编译预处理时进行简单的替换&#xff0c;不作正确性检查&#xff0c;不关含义是否正确照样带入&#xff0c;只有在编译已被展开的源程序时才会发现可能的错误并报错。例如&#xff1a; #define PI 3.1415926 程序中的&#xff1a;areaPI*r…

字符串替换方法的优劣

需求&#xff1a;String str "中aacabbbaac中sabbcccdddddeee"; String[] findStr {"aa","b","c","d","e","f","g"} ; String[] repStr {"A","B","C",…

Fedora 19 Mate环境安装Gnome3

From: http://blog.csdn.net/skykingf/article/details/9230297 等了N久的Fedora19终于出来了&#xff0c;安装时选了Mate桌面&#xff0c;装完后发现真是回到了Gnome2的年代&#xff0c;同样是Mate&#xff0c;Fedora就不能向Mint15里的Mate学学&#xff1f;起码也让用户感觉…

6月份美国域名总量新增近5.4万个 环比减少51%

中国IDC评述网07月03日报道&#xff1a;据域名统计机构WebHosting.info公布的数据显示&#xff0c;截至2012年6月25日&#xff0c;美国域名总量达到了79,632,920个&#xff0c;域名增幅较小。下面&#xff0c;IDC评述网与大家一起关注6月份美国域名注册量最新情况。 &#xff0…