c语言已知先序还原二叉树,(c++ 递归)先序 中序 还原二叉树
#include "iostream"
using namespace std;
char A[50],B[50];
struct Node
{
char Data;
Node *left;
Node *right;
};
struct Tree
{
private:
Node *root;
public:
Tree(){root=NULL;}
Node *&Root(){return root;} //访问根节点
void Output();
void Output(Node *p);
int Height();
int Height(Node *p);
};
int Tree::Height()
{
return Height(root);
}
int Tree::Height(Node *p)
{
if(p==NULL) return 0;
int left,right;
left=Height(p->left);
right=Height(p->right);
if(left>right) return left+1;
else return right+1;
}
void Tree::Output()
{
Output(root);
}
void Tree::Output(Node *p)
{
if(p!=NULL)
{
cout<Data<
Output(p->left);
Output(p->right);
}
}
void f(int Aleft,int Bleft,int Len,Node *&p) //A,B的左坐标
{
if(Len<=0)
{
p=NULL;
return;
}
int len,i;
i=Bleft;
while(A[Aleft]!=B[i]) i++;
p=new Node;
p->Data=A[Aleft];
len=i-Bleft;
f(Aleft+1,Bleft,len,p->left);
f(Aleft+len+1,i+1,Len-len-1,p->right);
}
int main( )
{
int n,i;
cin>>n;
for(i=0;i
cin>>A[i];
for(i=0;i
cin>>B[i];
Tree tree;
f(0,0,n,tree.Root());
cout<
return 0;
}
c语言已知先序还原二叉树,(c++ 递归)先序 中序 还原二叉树相关推荐
- 二叉树遍历(递归实现前序/中序/后序遍历)
1. 准备工作 我们先定义一棵普通的二叉树,如下图 2. 前序遍历 通过递归进行遍历: 如果二叉树为空,则操作返回: 如果非空,否则从根结点开始,然后遍历左子树,再遍历右子树. 前序遍历的结果是:AB ...
- 图解二叉树非递归版的中序遍历算法
你会学到什么 讨论的问题是什么 这个问题相关的概念和理论 非递归版中序遍历算法 代码思考 算法技巧 实现代码 快照 评价算法 总结 欢迎关注算法思考与应用公众号 你会学到什么? 树的递归遍历算法很容易 ...
- 树与二叉树——由前序序列和中序序列确定一刻二叉树
确定一棵二叉树的方法可以使用扩展二叉树来构建以可二叉树,也可以通过由前序序列和中序序列或者由前序序列和后序序列来确定一棵二叉树. 例如由前序序列和中序序列来确定一棵二叉树,这里用到的方法是利用递归算法 ...
- 已知一棵完全二叉树存于顺序表sa中,sa.elem[1..sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表。
已知一棵完全二叉树存于顺序表sa中,sa.elem[1-sa.length]含结点值,试编写算法由此顺序存储结构建立该二叉树的二叉链表. 分析:由二叉树的性质可知,一个下标为i的节点若有左子树,则其左 ...
- c语言 已知某系统在通信联络中,数据结构(习题)..doc
数据结构(习题). 题1.1 数据结构在计算机内存中的表示是指---. A.数据的存储结构 B.数据元素 C.数据的逻辑结构 D.数据元素之间的关系 题1.2 从逻辑上可把数据结构分为--. A.动态 ...
- 由序列确定二叉树:前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 代码实现(c语言)
下面三种序列可以唯一的构造唯一的一棵二叉树: 前序序列和中序序列构造二叉树 后序序列和中序序列构造二叉树 层次遍历序列和中序遍历序列构造二叉树 #include<stdio.h> #inc ...
- 数据结构之二叉树的前序遍历、中序遍历、后序遍历、层序遍历
一.二叉树的遍历概念 二叉树的遍历是指从根结点触发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次. (1). 前(先)序遍历 前序遍历:若二叉树为空,则空操作返回,否则先 ...
- 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)
zsychanpin 博客园 首页 新随笔 联系 订阅 管理 树的基本概念和遍历规则 树的递归定义 树是n(n>0)个结点的有限集,这个集合满足下面条件: ⑴有且仅有一个结点没有前驱 ...
- 根据二叉树的前序遍历和中序遍历重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- python根据二叉树的前序遍历和中序遍结果历重建二叉树
python根据二叉树的前序遍历和中序遍结果历重建二叉树 前序遍历 对于当前节点,先输出该节点,然后输出他的左孩子,最后输出他的右孩子.以上图为例,递归的过程如下: (1):输出 1,接着左孩子: ( ...
最新文章
- 大型分布式网站架构技术总结
- 函数-模块化程序设计
- 【收藏】win10将wsl升级到wsl2
- html5_0_文章_分级_分段
- 《企业级ios应用开发实战》一2.2 iOS框架介绍
- _Linux中功能强大的截图工具 - Flameshot
- 宝塔 + 百度BCC + centos + vue + 搭建nginx服务器
- 最小安装下如何打开网络连接
- ext.net 2.5 导出excel的使用方法
- Ubuntu 10.04 开机默认进入命令行模式
- 蓝桥杯官网 试题 PREV-94 历届真题 矩阵计数【第十届】【决赛】【研究生组】【C++】解法
- 北京54坐标系和1980西安坐标系转换
- 经纬度坐标系之间相互转化工具(百度与WGS84、百度与国测局、国测局与WGS)
- 《一》微信小程序简介
- 关于农历闰月年份的口诀
- 热更新应用--热补丁Hotfix学习笔记
- mame 游戏铁钩船长/拳皇97 支持多手柄,电视遥控器~~
- 个人数据泄露问题的数据_非个人的个人数据
- application octet stream java_Java servlet句柄application/octet-stream用于图像上传
- 1016: 委派任务*
热门文章
- HDU 2084 数塔(DP)(JAVA版)
- 2018-2019-1 20165214 《信息安全系统设计基础》第六周学习总结
- 函数小知识点(文档字符串,闭包等)
- 2022-2028年中国生物类似药产业深度调研及前瞻分析报告
- Maven中mirrors和repository的关系
- 2022-2028年中国肉制品行业市场调查研究及前瞻分析报告
- NetCore学习实践1__项目创建和配置文件的获取
- 经典算法研究系列:二、Dijkstra 算法初探
- matlab nt什么意思,胎儿nt是什么意思
- php 英文小写变大写,PHP英文字母大小写转换函数