劍指04 重建二叉樹

2021-10-20 18:34:37 字數 1265 閱讀 3475

劍指04 - 重建二叉樹

題目描述

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。

假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。

例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

示例1輸入

[1,2,3,4,5,6,7],[3,2,4,1,6,5,7]

返回值解法:

/**

* definition for binary tree

* public class treenode

* }*/public class solution

public treenode reconstructbinarytreebinary(int pre, int prestart, int preend, 

int in, int instart, int inend)

}return root;

}}

--- 2021.03.26 update --- 記錄左子樹的長度更好理解 ---

/**

* definition for binary tree

* public class treenode

* }*/public class solution

private treenode reconstruct(int pre, int pres, int pree, int in, int ins, int ine)

treenode root = new treenode(rootval);

root.left = reconstruct(pre, pres+1, pres + size, in, ins, ins+size-1);

root.right = reconstruct(pre, pres + size+1, pree, in, ins+size+1, ine);

return root;

}}

小總結:

1.重建二叉樹,直接遞迴方法,

2.先根據先序遍歷結果確定中序遍歷根節點所在位置,再用遞迴方法重建根節點的左右孩子

3.重建左右孩子時,左孩子的先序遍歷截止位置為 (prestart-instart+i),右孩子的先序遍歷起始位置是 (prestart-instart+i+1)

4.這種思路只能先背住了

04重建二叉樹 劍指offer,java版

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回 definition for binary tree public class treenode public class...

劍指Offer(04) 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。通常樹有如下幾種遍歷方式 前序遍歷 先訪問根節點,再訪問左子節點,最後訪問右子節點。中序遍歷 先訪問左子節點,再訪問根節點,最後訪問...

劍指offer Python 04 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。樹是一種常見資料結構。除根結點外每個結點只有乙個父結點,根結點沒有父結點,除葉結點外所有結點都有乙個或多個子結點,葉結點沒有子結點。...