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 二叉树模型 二叉树是树的一种应用,一个节点可以有两个孩子:左孩子,右孩子,并且除了根节点以外每个节点都有一个父节点.当然这种简单的二叉树不能解决让树保持平衡状态,例如你一直往树的左边添加元素 ...
随机推荐
- 使用vs2010进行驱动开发的补充
看到前面的一篇文章 ,在这里http://www.cnblogs.com/wubiyu/archive/2010/05/17/1737420.html vs2010配置驱动开发基本上按照如上所说就差不 ...
- 对象、对象数组、JSON、JSON数组的相关操作
本文主要是对JS操作JSON的要领做下总结在JSON中,有两种结构:对象和数组 1. 一个对象以“{”(左括号)开始,“}”(右括号)结束.每个“名称”后跟一个“:”(冒号):“"名称/值& ...
- Android 动画-alpha(渐变透明度动画效果)
今天苦于思索应用如何美观,首先从载入页面的第一眼开始,Android动画分为四种:alpha(渐变透明度),scale(渐变尺寸伸缩),translate(画面转换位置移动),rotate(画面转移旋 ...
- ifconfig命令
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- tcxtreelist 控制单元格变颜色,或者行变颜色
如果控制单元格变颜色,只需要把注释的放开就可以了, 也就是判断当前列,是否是你想让变颜色的列. 如果想整行变颜色, 则只需要注释下面的就可以了. procedure TfrmwpOrderSendin ...
- 【译】Selenium 2.0 WebDriver
Selenium WebDriver 注意:我们正致力于完善帮助指南的每一个章节,虽然这个章节仍然存在需要完善的地方,不过我们坚信当前你看到的帮助信息是精确无误的,后续我们会提供更多的指导信息来完 ...
- linux 内存管理——内核的shmall 和shmmax 参数
内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好. SHMMIN= 最小的内存seg ...
- java nio 快速read大文件
If you want to make your first example faster FileChannel inChannel = new FileInputStream(fileName). ...
- 最短路变形 poj3615&
问题: 牛要跨过一些障碍,希望以最小的体力跨过障碍,并且对于一条路径,只在乎其中最高的障碍. 输入N代表站点数,标记为1—N,输入M代表路径数,从站点S到E之间需要跨过高度为H的障碍. 输入T代表牛要 ...
- devexpress中gridview控件编辑时改变输入法状态
在win7环境下使用Devexpress中的SpinEdit控件,切换成中文[简/繁]输入法输入数字键时有不少输入法会重复产生数字如输入1会变成11,输入123会变成112233.使用SpinEdit ...