首页 > 编程知识 正文

某二叉树的前序序列和后序序列,前序序列与中序序列相同的二叉树

时间:2023-05-06 15:11:20 阅读:249430 作者:3636

二叉树的遍历方式常见的三种是:先序遍历(ABC)、中序遍历(BAC)、后序遍历(BCA)

 先序遍历:

   若二叉树为空,则空操作;否则:

访问根结点;先序遍历左子树;先序遍历右子树。

 中序遍历:

   若二叉树为空,则空操作;否则:

中序遍历左子树;访问根结点;中序遍历右子树。

 后序遍历:

   若二叉树为空,则空操作;否则:

后序遍历左子树;后序遍历右子树;访问根结点。

在学习到 根据遍历序列确定二叉树 时,知道了:可以通过二叉树的先中或者中后遍历序列唯一确定一棵二叉树。

根据算法描述 使用java 码出依据中后遍历序列来获取先序遍历序列的代码:

1 package learn.normalcode; 2 3 import java.util.ArrayList; 4 5 public class BlankD { 6 public static ArrayList<Character> ansList = new ArrayList<>(11); 7 //通过二叉树的中序序列和后序序列获取前序序列 8 public static void getAns(String middle, String back) { 9 //后序序列的最后一个结点为根结点10 int backLength = back.length(), middleLength = middle.length();11 char c = '#';12 if (backLength > 0) {13 c = back.charAt(backLength - 1);14 ansList.add(c);15 16 //从中/后序序列中分裂出左右子树的中/后序序列17 int indexOfRoot = middle.indexOf(c);18 getAns(middle.substring(0, indexOfRoot), back.substring(0, indexOfRoot));19 getAns(middle.substring(indexOfRoot + 1, middleLength), back.substring(indexOfRoot, backLength - 1));20 }21 return;22 23 }24 public static void main(String[] args) {25 String middle = "SMBDCEAFHG", back = "MSDECBHGFA";26 getAns(middle, back);27 System.out.println(ansList);28 29 ansList.clear();30 middle = "DCBA";31 back = "DCBA";32 getAns(middle, back);33 System.out.println(ansList);34 35 ansList.clear();36 middle = "SMBDCEA";37 back = "MSDECBA";38 getAns(middle, back);39 System.out.println(ansList);40 }41 }

 

转载于:https://www.cnblogs.com/orzt/p/11529865.html

TikTok半月报来了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。