劍指offer 重構二叉樹

2021-07-16 07:23:45 字數 975 閱讀 5202

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

1.前序遍歷:

前序遍歷的規則:先根節點,後左子樹,再右子樹

2.中序遍歷:

中序遍歷的規則:先左子樹,後根節點,再右子樹

3.求重構二叉樹:

根據二叉樹,應當想當應該使用遞迴方式,遞迴的畫尋找規律,根據前序遍歷,中序遍歷的規則,可以得到下面的圖示

遞迴函式的設計:

注意點:

public

class solution ;

int in=new

int ;

system.out.println(so.reconstructbinarytree(pre, in));

}public treenode reconstructbinarytree(int pre,int in)

//前序陣列,前序起始位,前序結束位,後序陣列,後序起始位,後序結束位

private treenode rebuild(int pre,int prestart ,int preend ,int in ,int instart,int inend)

treenode node=new treenode(pre[prestart]);

//定位根節點

for(int i=instart;iif(in[i]==pre[prestart])

}//當遞迴結束後,返回當前節點

return node;

}public

class treenode

public string tostring() 右孩子:";}}

}

劍指Offer 重構二叉樹

題目 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建出如下圖所示的二叉樹並輸出它的頭結點。在二叉樹的前序遍歷序列中,第乙個數字總是樹的根結點的值。但在中序遍歷序列中,根結點的值在序列的中間,左...

劍指Offer 重構二叉樹

給定二叉樹的先序遍歷和中序遍歷 重新生成二叉樹 public class reconstructbinarytree public treenode reconstructbinarytree int pre int in 遞迴得到先序遍歷起止點為prestart和preend,中序遍歷起止點為in...

劍指Offer 重構二叉樹

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