前序遍歷是先遍歷根節點,然後左子樹,最後右子樹。
我們知道,前序遍歷的第乙個數字就是根節點,由根節點的值我們在中序遍歷的序列中可以根據根節點的值區分出左子樹還有右子樹,以及每個子樹的結點的數目,然後我們由此在前序遍歷的序列中劃分出相應的左右子樹,進行遞迴進行。
class treenode
}public
class
solution
//進入遞迴函式
return reconstructtree(pre,0,pre.length-1,in,0,in.length-1);
}public treenode reconstructtree(int pre, int startpre, int endpre, int in, int startin, int endin)
int rootvalue = pre[0];
treenode root=new treenode(rootvalue);
root.left=null;
root.right=null;
int indexin=0;
//在中序遍歷序列中找到根節點的位置
for(int i=startin;i<=endin;i++)
}//左子樹的結點個數
int leftlength= indexin-startin;
int leftpreend=startpre+leftlength;
//遞迴左右子樹
root.left=reconstructtree(pre,startpre+1,leftpreend,in,startin,indexin-1);
root.right=reconstructtree(pre,leftpreend+1,endpre,in,indexin+1,endin);
return root;
}
由中序和後序(前序)序列求前序(後序)序列
已知二叉樹的中序和後序 前序 序列可以唯一確定一顆二叉樹,例如,中序序列 1 2 3 4 5 6 後序序列 3 4 2 6 5 1 可以唯一確定一顆二叉樹,如下圖 思路是這樣的 我們知道對於一顆二叉樹,根節點是後序遍歷序列的最後乙個,找到根節點後,我們由中序遍歷的特點知道,中序序列中,根節點 左邊的...
由中序遍歷和後序遍歷得到前序遍歷(樹的遍歷)
給定一棵二叉樹的後序遍歷和中序遍歷,請你輸出其層序遍歷的序列。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其後序遍歷序列。第三行給出其中序遍歷序列。數字間以空格分隔。輸出格式 在一行中輸出該樹的前序遍歷的序列。數字間以1個空格分隔,行...
如何根據前序遍歷序列和中序遍歷序列確定二叉樹
分段,每一段找根節點,就好,找root,有點遞迴的思路。例如 假設某二叉樹的先序遍歷序列是abdgcefh,中序遍歷序列是dgbaechf,畫出二叉樹,並給出其後序遍歷序列.以下面的例題為例進行講 已知一棵二叉樹的先序遍歷序列和中序遍歷序列分別是abdgcefh dgbaechf,求二叉樹及後序遍歷...