劍指OFFER005重建二叉樹

2021-09-29 09:41:37 字數 675 閱讀 4877

問題:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。

解題思路:

(1)輸入前序遍歷陣列和中序遍歷陣列,返回樹節點;

(2)判斷前序遍歷陣列和中序遍歷陣列的內容和長度是否為空;

(3)新建乙個樹,起始節點為前序遍歷的第乙個節點;

(4)遍歷中序遍歷,如果中序遍歷中的點等於前序遍歷中選定的點:

左節點=遞迴(前序遍歷(0,i),中序遍歷(0,i)

右節點=遞迴(前序遍歷(i+1, 前序末尾),中序遍歷(i+1,中序末尾));

(5)返回樹;

public static class treenode 

}public treenode reconstructbinarytree(int pre,int in)

if (pre.length == 0 || in.length == 0)

if (pre.length != in.length)

treenode root = new treenode(pre[0]);

for (int i = 0; i < pre.length; i++)

}return root;

}

4 重建二叉樹(劍指offer)

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

劍指offer 樹 7 重建二叉樹

使用雜湊表map記錄中序遍歷每個元素的位置 利用性質 1.先序遍歷的第乙個節點是根節點 2.中序遍歷的根節點的左邊是左子樹,右邊是右子樹 假設左子樹的中序遍歷的長度是len,在前序遍歷中,根節點後面len個數,是左子樹的前序遍歷,剩下的數是右子樹的前序遍歷 根據左右子樹的前序遍歷和中序遍歷,我們先遞...

劍指offer4 重建二叉樹

給出前序遍歷和中序遍歷,重新構建二叉樹.重建二叉樹主要就是遞迴,每一次新增乙個結點進入二叉樹,保證遞迴的順序和前序遍歷順序一致就ok了,多以左子樹的遞迴在前面,右子樹的遞迴放在後面,和前序遍歷的順序一致,第一次遞迴新增前序遍歷陣列中的第乙個,第二次遞迴新增的是前序遍歷陣列中的第二個.第n個就是陣列中...