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