题外话:
昨天蚊蚊子练车车,蹦蹦哒哒的下车回学校,然后手机就蹦掉了,屏就碎掉了惹,沮丧~
所以今天蚊蚊子为了心情扎了一个双丸子头,然后做了几道剑指offer的题来压压惊~
题意:
输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。
思路:
前序遍历:根 - 左 - 右
中序遍历:左 - 根 - 右
先看前序,因为前序遍历的第一个节点,就是该树的根。那么在中序中找到该根的位置,设为index;
在中序遍历集合中,位于index之前的属于根的左子树,位于index之后的属于根的右子树;
然后,对左右子树,遍历的调用该过程,就能将树结构还原;
代码:
1 | /** |