C++实现建立和一二进制树的三个递归遍历
说明:这篇文章是学习交流,转载请注明出处,欢迎转载!
二叉树是一种常见的数据结构。二叉树的遍历也是家常便饭的事了,这里仅仅写出一个完整的能够执行的C++代码来随便建立一个例如以下图所看到的的二叉树,建一棵二叉树是实现二叉树各种操作的基础,以下的程序也非常easy,这仅仅是二叉树练习的開始,以后的博文中,将会紧紧环绕这棵二叉树练习很多其它的操作:如求二叉树的大小。二叉树的深度。翻转二叉树...,这里仅仅是基础中的基础,仅仅是为以后的学习做铺垫。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvSlhIXzEyMw==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
以下给出C++代码,代码的功能包含:
1.建立如上图所看到的的简单的二叉树。
2.给出三种常见的二叉树的遍历方式,拿来练练手吧。
以下的代码是能够直接执行的代码:
#include<iostream>
using namespace std;
struct Node
{
int data;
Node *left;
Node *right;
Node(int data)
{
this->data=data;
this->left=NULL;
this->right=NULL;
}
};
class BinTree
{
public:
Node *root;
Node* CreateTree();
void preOrder(Node *r);//递归实现先序遍历
void InOrder(Node *r);//递归实现中序遍历
void PostOrder(Node *r);//递归实现兴许遍历
}; Node* BinTree::CreateTree()//创建一棵二叉树
{
Node *p1=new Node(1);
Node *p2=new Node(2);
Node *p3=new Node(3);
Node *p4=new Node(4);
Node *p5=new Node(5);
Node *p6=new Node(6);
Node *p7=new Node(7);
Node *p8=new Node(8);
Node *p9=new Node(9);
p1->left=p2;
p1->right=p3;
p2->left=p4;
p2->right=p5;
p5->left=p6;
p3->left=p7;
p3->right=p8;
p8->right=p9;
root=p1;
return p1;
} void BinTree::preOrder(Node *r)//递归实现先序遍历
{
if(r==NULL)
{
return ;
}
else
{
cout<<r->data<<" ";
preOrder(r->left);
preOrder(r->right);
}
} void BinTree::InOrder(Node *r)//递归实现中序遍历
{
if(r==NULL)
{
return ;
}
else
{
InOrder(r->left);
cout<<r->data<<" ";
InOrder(r->right);
}
} void BinTree::PostOrder(Node *r)//递归实现后序遍历
{
if(r==NULL)
{
return ;
}
else
{
PostOrder(r->left);
PostOrder(r->right);
cout<<r->data<<" ";
}
} int main()
{
BinTree t;
t.CreateTree();//创建二叉树
cout<<"先序遍历:";
t.preOrder(t.root);//先序遍历
cout<<endl; cout<<"中序遍历:";
t.InOrder(t.root);//中序遍历
cout<<endl; cout<<"后序遍历:";
t.PostOrder(t.root);//后序遍历
cout<<endl;
return 0;
}
执行结果例如以下:
C++实现建立和一二进制树的三个递归遍历的更多相关文章
- Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树
Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 目录 Alink漫谈(十六) :Word2Vec源码分析 之 建立霍夫曼树 0x00 摘要 0x01 背景概念 1.1 词向量基础 ...
- 哈夫曼编码与解码的C++实现:建立哈夫曼树、进行哈夫曼编码与解码
最近完成了数据结构课程设计,被分到的题目是<哈夫曼编码和解码>,现在在这篇博文里分享一下自己的成果. 我在设计时,在网上参考了很多老师和前辈的算法和代码,向他们表示感谢!他们的成果给了我很 ...
- 数据结构(3) 第三天 栈的应用:就近匹配/中缀表达式转后缀表达式 、树/二叉树的概念、二叉树的递归与非递归遍历(DLR LDR LRD)、递归求叶子节点数目/二叉树高度/二叉树拷贝和释放
01 上节课回顾 受限的线性表 栈和队列的链式存储其实就是链表 但是不能任意操作 所以叫受限的线性表 02 栈的应用_就近匹配 案例1就近匹配: #include <stdio.h> in ...
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...
- 树的三种遍历方式(C语言实现)
//************************************************************************* // [前序]遍历算法 //二叉树不空,先访问根 ...
- Java中树和树的几种常规遍历方法
其中包含有先序遍历.中序遍历.后序遍历以及广度优先遍历四种遍历树的方法: package com.ietree.basic.datastructure.tree.binarytree; import ...
- 递归遍历JSON树
递归遍历JSON树 前几天有个人问我,json串的层级无限深,但在json串中的key是已知的,在json串中的value,有些事Object,有些是Array,如何把这些层级无限深的key所对应的v ...
- Python与数据结构[3] -> 树/Tree[0] -> 二叉树及遍历二叉树的 Python 实现
二叉树 / Binary Tree 二叉树是树结构的一种,但二叉树的每一个节点都最多只能有两个子节点. Binary Tree: 00 |_____ | | 00 00 |__ |__ | | | | ...
- java:数据结构(四)二叉查找树以及树的三种遍历
@TOC 二叉树模型 二叉树是树的一种应用,一个节点可以有两个孩子:左孩子,右孩子,并且除了根节点以外每个节点都有一个父节点.当然这种简单的二叉树不能解决让树保持平衡状态,例如你一直往树的左边添加元素 ...
随机推荐
- tbr tbn tbc
http://tech.bobgo.net/?m=201004 因为最近的工作需要从MP4视频中提取一些关键帧,要了解如何将视频的时间点转换为对应的帧号,所以查阅了一些关于视频编解码以及时间同步方式的 ...
- python描述符descriptor(二)
python内置的描述符 python有些内置的描述符对象,property.staticmethod.classmethod,python实现如下: class Property(object): ...
- 内核驱动中常见的miscdevice、platform_device、platform_driver
最近在看驱动模型,是越看越糊涂,以前接触比较多的都是一些字符驱动,对字符驱动的框架有一定的了解.后来因为想在驱动中实现设备文件的创建,又了解了一下,sysfs文件系统和udev设备文件系统(这两个是两 ...
- poj3254Corn Fields(状压)
http://poj.org/problem?id=3254 第一个状压题 思路挺好想 用二进制表示每行的状态 然后递推 用左移 右移来判断是不是01间隔出现 c大神教的 我的代码WA在这个地方了.. ...
- hdu4678Mine
http://acm.hdu.edu.cn/showproblem.php?pid=4678 之前写了一并差集找连通块 貌似不对 比赛时写的dfs爆栈了 只好用bfs了 单独数字块 为1 空白+数字 ...
- apache和tomcat
Apache 和 Tomcat 都是web网络服务器,两者既有联系又有区别,在进行HTML.PHP.JSP.Perl等开发过程中,需要准确掌握其各自特点,选择最佳的服务器配置. Apache是web服 ...
- Android与PHP服务器交互
转自:http://blog.csdn.net/ab_ba/article/details/7912424 服务器端:server.php 1 <?php 2 include(' ...
- java split函数用法(转)
1.语法如下 String.split(sourceStr,maxSplit) String.split(sourceStr) 参数说明:sourceStr是被分割的字符串,maxSplit是最大的分 ...
- 支持度(support)和置信度(confidence)
支持度(Support)的公式是:Support(A->B)=P(A U B).支持度揭示了A与B同时出现的概率.如果A与B同时出现的概率小,说明A与B的关系不大:如果A与B同时出现的非常频 ...
- HDU POJ 1015 Jury Compromise(陪审团的人选,DP)
题意: 在遥远的国家佛罗布尼亚,嫌犯是否有罪,须由陪审团决定.陪审团是由法官从公众中挑选的.先随机挑选n个人作为陪审团的候选人,然后再从这n个人中选m人组成陪审团.选m人的办法是:控方和辩方会根据对候 ...