- 26
- 0
- 约1.33万字
- 约 15页
- 2017-03-05 发布于重庆
- 举报
二叉树遍历及C语言实现
二叉树遍历及C语言实现
已知中序和前序序列,或者已知中序和后序序列,都能够构造一棵二叉树。在本例中,本人用C语言写程序解答了下面两个算法题:
(1)给出一棵二叉树的中序与后序遍历序列,求出它的先序遍历序列。
(2)给出一棵二叉树的中序与先序遍历序列,求出它的后序遍历序列。
知识点扼要回顾:所谓二叉树的遍历,是指按一定的顺序对二叉树中的每个结点均访问一次,且仅访问一。按照根结点访问位置的不同,通常把二叉树的遍历分为六种:TLR(根左右), TRL(根右左), LTR(左根右)RTL(右根左), LRT(左右根), RLT(右左根)
其中,TRL、RTL和RLT三种顺序在左右子树之间均是先右子树后左子树,这与人们先左后右的习惯不同,因此,往往不予采用。余下的三种顺序TLR、LTR和LRT根据根访问的位置不同分别被称为序遍历、中序遍历和后序遍历。
序遍历的规律是:输出根结点,输出左子树,输出右子树;?中序遍历的规律是:输出左子树,输出根结点,输出右子树;后序遍历的规律是:输出左子树,输出右子树,输出根结点;
不多说了,看代码吧:)
#include iostream??#include string???using namespace std;???//存储节点数据,为简便起见,这里选用字符??typedef char?? DATA_TYPE;??typedef类型定义,它就和define相对应define是把一个自己起的名字的常量定义为代替它的另一个常量来用typedef是把一个自己起的名字的类型用已经有的类型代替使用,如: typedef int Type1;之后如果有Type1 i ;系统则理解为int i;
?typedef struct tagBINARY_TREE_NODE? BINARY_TREE_NODE, *LPBINARY_TREE_NODE;??//(这三个都是结构体)?struct tagBINARY_TREE_NODE??{??????? DATA_TYPE???????????? data;?????????? //节点数据??????? LPBINARY_TREE_NODE??? pLeftChild;???? //左孩子指针??????? LPBINARY_TREE_NODE??? pRightChild;??? //右孩子指针?
?};???//??//函数名称:TreeFromMidPost??//函数功能:给出一棵二叉树的中序与后序序列,构造这棵二叉树。???//输入参数:LPBINARY_TREE_NODE lpNode:二叉树的结点???//????????? string mid:存储了二叉树的中序序列的字符串???//????????? string post:存储了二叉树的后序序列的字符串???//????????? int lm, int rm:二叉树的中序序列在数组mid中的左右边界???//????????? int lp, int rp:二叉树的后序序列在数组post中的左右边界??//??void TreeFromMidPost(LPBINARY_TREE_NODE lpNode, string mid, string post, int lm, int rm, int lp, int rp)??{????? //构造二叉树结点????? lpNode = new BINARY_TREE_NODE;????? lpNode-data = post[rp];????? lpNode-pLeftChild = NULL;????? lpNode-pRightChild = NULL;?????? int pos = lm;?????? while (mid[pos] != post[rp])????? {????????? pos++;??//中序根的位置??? }????? int iLeftChildLen = pos - lm;??//中序左孩子长度???? if (pos lm)//有左孩子,递归构造左子树????? {????????? TreeFromMidPost(lpNode-pLeftChild, mid, post, lm, pos - 1, lp, lp + iLeftChildLen - 1);????? }?????? if (pos rm)//有右孩子,递归构造右子树????? {????????? TreeFromMidPost(lpNode-pRightChild, mid, post, pos + 1, rm, lp + i
您可能关注的文档
最近下载
- 电子倍增层背散射效应对增益及噪声的影响研究.pdf
- 弹簧模型-2023年高考物理动量常用模型模拟题精练(解析版).pdf VIP
- REF615使用操作说明书 (1).pdf
- (高清版)DB33 686-2019 机制纸板和卷烟纸单位产品能耗限额及计算方法.pdf VIP
- 7.3 世界上最大的黄土堆积区—黄土高原 第2课时(教学课件)-2025-2026学年八年级地理下册(人教版2024).pptx
- 深度解析(2026)《SFT 0074-2020耕地和林地破坏司法鉴定技术规范》.pptx VIP
- 2024年贵州省高考生物真题卷(含答案与解析)_7674.pdf VIP
- 弹簧模型-动量守恒的十种模型2025高考物理专项复习含答案.pdf VIP
- 市政协领导班子2024年民主生活会对照检查发言材料(四个带头).docx VIP
- 市政协副主席2024年民主生活会对照检查材料(四个带头).docx VIP
原创力文档

文档评论(0)