首页 > 编程知识 正文

二叉树前序序列解,在二叉树的前序序列

时间:2023-05-05 09:52:58 阅读:249419 作者:4260

题目

已知一棵二叉搜索树的前序遍历序列,求二叉搜索树的中序遍历序列

例:

input : 5 3 2 4 7 6

output : 2 3 4 5 6 7

思路

1.最简单的方法是直接排序数组,因为二叉搜索树的中序遍历是有序的.缺点在于排序的时间复杂度最低也是O(nlogn),并没有利用前序遍历的特点.

2.前序遍历的第一个节点一定是根节点,然后根据二叉搜索树左子树小于根节点,右子树大于根节点的特点,将数组分为三部分,  根节点 - wydgs , 然后对于左右子树分别递归的采用此思想分解.      

代码 public int[] getMidTravel(int[] a){ int[] result = new int[a.length]; getMidTravel(a,0,a.length-1,result,0); return result; } public void getMidTravel(int[] a,int begin,int end,int[] result,int offset){ if(begin>end) return; if(begin==end){ result[begin+offset] = a[begin]; return; } int i=begin+1; for(;i<a.length&&a[i]<a[begin];i++); result[i-1+offset] = a[begin]; getMidTravel(a,begin+1,i-1,result,offset-1); getMidTravel(a,i,end,result,offset); }

 

C#定时器实现自动执行的方法

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