每日算法--根据前序中序遍历重构二叉树

Posted 明仔仔的小窝

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了每日算法--根据前序中序遍历重构二叉树相关的知识,希望对你有一定的参考价值。



心之所向


每日算法--根据前序中序遍历重构二叉树

素履以往


最近听《大秦赋》秦孝公求贤令;叹技术不硬,奈何机会摆在眼前也是无用。


前序遍历 preorder = [3920157]

中序遍历 inorder = [9315207];


那么根据这个两种遍历方式如何递归出二叉树。来源:力扣(LeetCode)


二叉树前序遍历的顺序为:


  • 先遍历根节点;

  • 随后递归地遍历左子树;

  • 最后递归地遍历右子树。


二叉树中序遍历的顺序为:


  • 先递归地遍历左子树;

  • 随后遍历根节点;

  • 最后递归地遍历右子树。



每日算法--根据前序中序遍历重构二叉树


  • 1、根据前序遍历第一个根节点在中序遍历中找出根节点index

  • 2、根据中序遍历根节点index能圈定左子树和右子树节点

  • 3、根据中序遍历左子树范围能确定前序遍历中左子树

  • 4、就可以获得前序左子树的边界值

  • 5、根据边界值递归遍历就知道左子树和右子树节点位置


JS编码实现:

每日算法--根据前序中序遍历重构二叉树


JAVA编码实现:

每日算法--根据前序中序遍历重构二叉树


debug结果展示:

每日算法--根据前序中序遍历重构二叉树


重构的二叉树


leetCode另一种javascript实现(转载




以上是关于每日算法--根据前序中序遍历重构二叉树的主要内容,如果未能解决你的问题,请参考以下文章

小白学算法8.二叉树的遍历,前序中序和后序

二叉树中,啥是前序,中序。后序!

二叉树的前序中序和后续遍历及应用场景

怎么根据二叉树的前序,中序,确定它的后序

聊聊算法 • 二叉树遍历(前序中序后序层次)

详解二叉树的遍历问题(前序后序中序层序遍历的递归算法及非递归算法及其详细图示)