劍指offer(4)重建二叉樹

2021-09-06 01:53:19 字數 697 閱讀 8169

(18.12.29)

題目描述

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

這題主要考二叉樹,

前序主要是

root

left

right

中序是left

root

right

舉個簡單例子;

1,2,4,5,3,6,7是前序;

4,2,5,1,6,3,7是中序;

則1是root時找中序1的位置,則4,2,5,1在左,6,3,7在右;

左邊遞迴就是前序2,4,5。 中序是4,2,5;

右邊遞迴是前序3,6,7. 中序是6,3,7;

一直遞迴到沒左右節點上**吧:

function treenode(x)  

function reconstructbinarytree(pre, vin)

function recursion(pre, vin)

if(rootindex > 0)

if(rootindex < vin.length - 1)

return roottree;

}

較為簡單

劍指offer4 重建二叉樹

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

劍指offer 4 重建二叉樹

題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 中序序列中,節點左邊為左子樹,右邊為右子樹。前序第乙個為根節點 12 4 7 3 5 6 8 左 4 7 215 3...

劍指offer 4 重建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。演算法設計思想 前序遍歷序列的第乙個元素為根結點的值,然後在中序遍歷序列中尋找根節點的值的位置 索引 從中序遍歷序列的起始位置到根結...