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