首页 > 其他分享 >二叉树

二叉树

时间:2023-06-10 10:35:50浏览次数:31  
标签:左子 结点 中序 右子 二叉树 序列

给定二叉树结点的前序序列和中序序列,可以唯一确定该二叉树。因为前序序列的第一个元素是根结点,该元素将二叉树中序序列分成两部分,左边(设l个元素)表示左子树,若左边无元素,则说明左子树为空;右边(设r个元素)是右子树,若为空,则右子树为空。根据前序遍历中“根—左子树—右子树”的顺序,则由从第二元素开始的l个结点序列和中序序列根左边的l个结点序列构造左子树,由前序序列最后r个元素序列与中序序列根右边的r个元素序列构造右子树。

(2)由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。证明如下:

当n=1时,只有一个根结点,由中序序列和后序序列可以确定这棵二叉树。

设当n=m-1时结论成立,现证明当n=m时结论成立。

设中序序列为S1,S2,…,Sm,后序序列是P1,P2,…,Pm。因后序序列最后一个元素Pm是根,则在中序序列中可找到与Pm相等的结点(设二叉树中各结点互不相同)Si(1≤i≤m),因中序序列是由中序遍历而得,所以Si是根结点,S1,S2,…,Si-1是左子树的中序序列,而Si+1,Si+2,…,Sm是右子树的中序序列。

若i=1,则S1是根,这时二叉树的左子树为空,右子树的结点数是m-1,则{S2,S3,…,Sm}和{P1,P2,…,Pm-1}可以唯一确定右子树,从而也确定了二叉树。

若i=m,则Sm是根,这时二叉树的右子树为空,左子树的结点数是m-1,则{S1,S2,…,Sm-1}和{P1,P2,…,Pm-1}唯一确定左子树,从而也确定了二叉树。

最后,当1

可唯一确定二叉树的左子树,由{Si+1,Si+2,…,Sm}和{Pi,Pi+1,…,Pm-1}可唯一确定二叉树的右子树 。

(3)由二叉树的前序序列和后序序列不能唯一确定一棵二叉树。因为无法确定左右子树两部分。例如,任何结点只有左子树的二叉树和任何结点只有右子树的二叉树,其前序序列相同,后序序列相同,但却是两棵不同的二叉树。

标签:左子,结点,中序,右子,二叉树,序列
From: https://blog.51cto.com/u_15983387/6454117

相关文章

  • 二叉树先序遍历算法的步骤
    //创建二叉树类型的结构体 //创建显得树节点并赋值并将该节点的左子树指针域和右子树指针域分别赋为NULL; //创建一个函数用于遍历二叉树并打印节点的值 //主函数将并将指针分别指向新的树节点  //执行遍历打印二叉树的节点的值 ......
  • 平衡二叉树
     1、平衡二叉树(AVL):它或者是一颗空树,左子树和右子树的深度之差不超过,且他的左子树和右子树都是一颗平衡二叉树2、平衡二叉树出现的原因:平衡二叉树就是在二叉排序树(BST)引入的,就是为了解决二叉排序树的不平衡性导致时间复杂度大大下降,AVL就保持住了BST的最好时间复杂度O(logn),所以每......
  • 初级数据结构--二叉树
    二叉树节点:树中的元素终端节点:分支数为0的节点有序树、无序树:节点左右排列顺序不得互换叫有序,反之为无序普通二叉树排序二叉树二叉顺序表定义和初始化typedefstructData{ intval;}Data;typedefstructTree{ Datadata; structTree*lbranch; structTree*rbranch;}T......
  • 代码随想录算法训练营第十七天|● 110.平衡二叉树 ● 257. 二叉树的所有路径 ● 404
    110.平衡二叉树力扣题目链接(opensnewwindow)给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。示例1:给定二叉树[3,9,20,null,null,15,7]返回true。示例2:给定二叉树[1,2,2,3,3,nu......
  • 算法学习day14二叉树part01-94、144、145
    packageLeetCode.Treepart01;importjava.util.ArrayList;importjava.util.List;publicclassTraversal{publicList<Integer>preorderTraversal(TreeNoderoot){List<Integer>result=newArrayList<Integer>();pre......
  • 二叉树的性质
    性质1: 在二叉树的第i层至多有2^(i-1)个节点  ,至少有1个节点               (度:节点拥有的子节点的个数)性质2:在深度为k的二叉树中,至多有2^k-1个节点,至少有k个节点性质3:对任何一颗二叉树,叶子个数为n0,度数为2的节点个数为n......
  • 代码随想录算法训练营第十五天|● 层序遍历 10 ● 226.翻转二叉树 ● 101.对称二叉
    102.二叉树的层序遍历力扣题目链接(opensnewwindow)给你一个二叉树,请你返回其按层序遍历得到的节点值。(即逐层地,从左到右访问所有节点)。思路:迭代法,非递归思路,借用队列,先进先出来达到层序遍历的效果。但写的过程中,我不知道该如何让同一层的数据都保存在一个数组里。看了题解发......
  • 二叉树
    (不是太太太理解)1、结构体定义typedefstructBiTNode{TElemTypedata;structBiTNode*lchild,*rchild;}BiTNode;2、构造二叉树intCreateBTree(BiTNode**tp)//?{//构造方法,或者说构造顺序,从左子树开始构造intx;printf("pleaseinpyutint......
  • 数据结构与算法-06树及二叉树
    树和二叉树完全二叉树:除了最下层,每一层都满了满二叉树:每一层都满了平衡二叉树:任意两个节点的高度差不大于1排序二叉树:链式存储常见应用场景xml/html解析路由协议mysql数据库索引文件系统结构二叉树在二叉树的第i层上至多有2^(i-1)个结点深度为k的二叉树......
  • 【锐格】数据结构-实验-二叉树
    7075#include<iostream>#include<cstdio>usingnamespacestd;typedefstructTNode{chardata;structTNode*lchild,*rchild;}BiNode,*BiTree;BiTreeT;voidcreateTree(BiTree&T){charch;cin>>ch;if(ch==&#......