1. 程式人生 > 其它 >排序二叉樹的中序遍歷序列是有序序列_LeetCode-105 從前序與中序遍歷序列構造二叉樹...

排序二叉樹的中序遍歷序列是有序序列_LeetCode-105 從前序與中序遍歷序列構造二叉樹...

技術標籤:排序二叉樹的中序遍歷序列是有序序列由雙遍歷序列構造二叉樹

題目:根據一棵樹的前序遍歷與中序遍歷構造二叉樹。

注意:
你可以假設樹中沒有重複的元素。

b60e40da7e5de6aacbe8af8dba1d240c.png

第一次遇到構造二叉樹的題目,且根據前序和中序遍歷的結果重構原樹。也能想到遞迴構造左、右子樹,但卡在瞭如何尋找左、右子樹的範圍,以及遞迴引數的選擇。

解法一:遞迴法

前序遍歷中首個節點必為根節點root,將inorder分成了左leftsubtree、右rightsubtree子樹兩部分;

分別進入左、右子樹,preorder 中儲存的為左子樹的根節點,將leftsubtree繼續分割。進而形成遞迴。

難點在於:

  • 如何表示leftsubtree、rightsubtree ?
  • 根節點的index索引如何設定?

直接看程式碼:

# Definition for a binary tree node.