从后序遍历还原二叉树
Posted redo19990701
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从后序遍历还原二叉树相关的知识,希望对你有一定的参考价值。
从后序遍历还原二叉树
/**
* @Date 2020/5/31
* @Author Redo
* @Description 从后序遍历输出中重建二叉树
**/
public class RecoverTreeFromPostOrderOutput {
static class Node{
int data;
Node l;
Node r;
public Node(){};
public Node(int data){
this.data=data;
l=null;
r=null;
}
public static void PostOrderPrint(Node node){
if(node==null)
return;
PostOrderPrint(node.l);
PostOrderPrint(node.r);
System.out.print(node.data+" ");
}
}
private static Node recover(int[] arr,int start,int end){
//该子树为空
if(start>end)
return null;
//末尾数字总是父节点
int head= arr[end];
Node node=new Node(head);
//左子树总是小于父节点,右子树总是大于父节点
int i=start;
for(;i<end;i++){
if(arr[i]>head)
break;
}
node.l= recover(arr,start,i-1);
node.r= recover(arr,i,end-1);
return node;
}
public static Node recover(int[] arr){
return recover(arr,0,arr.length-1);
}
public static void main(String[] args) {
int[] arr={2,4,3,6,8,7,5};
Node node=recover(arr);
Node.PostOrderPrint(node);
}
}
以上是关于从后序遍历还原二叉树的主要内容,如果未能解决你的问题,请参考以下文章