已知前序或後續遍歷和中序遍歷重建二叉樹

2021-08-28 12:46:19 字數 1033 閱讀 9108

題目描述

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

struct treenode 

};class solution

}//中序遍歷根節點左邊的排序是左子樹的中序遍歷

for(int i = 0; i < gen; i++)

//同理右邊是右子樹的中序遍歷,相對應前序遍歷的i

for(int i = gen + 1; i < in.size(); i++)

//歸併

head -> left = reconstructbinarytree(left_pre, left_in);

head -> right = reconstructbinarytree(right_pre, right_in);

return head;

}};

已知後續遍歷和中序遍歷的情況

class solution 

}for(int i = 0; i < gen; i++)

for(int i = gen + 1; i < in.size(); i++)

head -> left = reconstructbinarytree(left_last, left_in);

head -> right = reconstructbinarytree(right_last, right_in);

return head;

}};

題目的其他解法:

public class solution 

//前序遍歷和中序遍歷序列

private treenode reconstructbinarytree(int pre,int startpre,int endpre,int in,int startin,int endin)

return root;

}}

已知中序遍歷和後序遍歷,求前序遍歷

已知中序遍歷和後序遍歷,求前序遍歷 演算法的主要部分是將中序遍歷分成左中右三部分 將後序遍歷分成左右中三部分 最後後序建樹的時候節點就等於中間的部分 左子樹由中序遍歷的左部分和後序遍歷的左部分構建 右子樹由中序遍歷的右部分和後序遍歷的右部分構建 include include include inc...

已知後序遍歷和中序遍歷求前序遍歷

而已知後序遍歷和中序遍歷求前序遍歷的過程差不多,但由於後序遍歷是最後才訪問根節點的 所以要從後開始搜尋,例如上面的例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgb a echf,而因為節點個數要對應...

二叉樹 已知前序遍歷和中序遍歷,輸出後續遍歷

已知某二叉樹的先序序列和中序序列,程式設計計算並輸出該二叉樹的後序序列。輸入說明 僅一組資料,分為兩行輸入,第一行表示指定二叉樹的先序序列,第二行表示該二叉樹的中序序列,序列元素均為大寫英文本元,表示二叉樹的結點。輸出說明 在一行上輸出該二叉樹的後序序列。輸入樣本 abdgcefh dgbaechf...