題目:
**實現:輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。
假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。
例如輸入前序遍歷序列和中序遍歷序列,
則重建二叉樹並返回。
/**
* definition for binary tree
* public class treenode
* }*///遞迴實現
public class solution
//前序:
//中序:
public treenode reconstructbinarytree1(int pre,int startpre,int endpre,int in,int startin,int endin)
//根據前序遍歷的特點可以找出根節點
treenode root=new treenode(pre[startpre]);
for(int i=startin;i<=endin;i++)
,中序:
左子樹第一次起始位置下標:中序:1~3,後序:0~2
右子樹第一次起始位置下標:中序:4~7,後序:4~7
然後依次遞迴實現。
*/root.left=reconstructbinarytree1(pre,startpre+1, startpre+i-startin,in,startin,i-1);
root.right=reconstructbinarytree1(pre,i+1+startpre-startin,endpre,in,i+1,endin);}}
return root;
}}
二叉樹習題之重建二叉樹
對於給定前序和中序的重建方法。1 前序的第乙個元素一定是樹的根節點,在中序集合中找到此元素,那麼該元素的左面即為根的左子樹,右面為右子樹。2 找到前序的第二個元素,重複上面的步驟。自寫程式的效率大概為 n n 2 或最大的那個元素 這點很坑,斟酌改掉 目前沒發現更快的寫法 自己寫 結果以連續記憶體的...
二叉樹練習題及解析
1 某二叉樹的前序序列和後序序列正好相反,則該二叉樹一定是 的二叉樹。答 高度等於其節點數 解析 前序遍歷順序是 m l r 後序遍歷的順序是 l r m 其中l r的相對位置不發生變化,變化的是m的位置。題目指出二叉樹的先序序列和後序序列結果正好相反 當二叉樹只有乙個節點時,只有m,l和r為空,滿...
資料結構 二叉樹練習題
求二叉樹的高度 只能彙總思想 int getheight node root int left getheight root.left int right getheight root.right return math.max left,right 1 求二叉樹第k層結點的個數 彙總 1.利用遞迴...