//前序遍歷和中序遍歷得出二叉樹,然後計算葉子節點的數目
public
class
frontmid
return
tree
(pre,
0,pre.length -
1,mid,
0,mid.length -1)
;}public
static treenode tree
(int
pre,
int ps,
int pe,
int[
] mid,
int ms,
int me)
int data = pre[ps]
;//前序遍歷的第乙個節點是根節點
int index = ms;
while
(ms < me && data != mid[index]
) treenode node =
newtreenode
(data)
;//前序遍歷的左子樹 ps + 1到 ps + index - ms 後續遍歷的左子樹 ms 到 index - 1
node.left =
tree
(pre,ps +
1,ps + index - ms,mid,ms,index -1)
;//前序遍歷的右子樹 ps + index - ms + 1到pe 後序遍歷的柚子西湖 index + 1到me
node.right =
tree
(pre,ps + index - ms +
1,pe,mid,index +
1,me)
;return node;
//返回的是根節點
}//計算葉子結點的數目
public
static
intleaf
(treenode root)
return
leaf
(root.left)
+leaf
(root.right);}
return0;
}}
劍指offer 根據前序遍歷和中序遍歷確定樹
題目描述 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 注意 前序遍歷和中序遍歷時根節點和左子樹都在右子樹前面。所以根據前序遍歷確定根節點,再根據在中序遍歷確定左右子樹的元...
劍指 由前序遍歷和中序遍歷重建二叉樹
題目 由前序遍歷和中序遍歷重建二叉樹 前序序列 1 2 3 4 5 6 中序序列 3 2 4 1 6 5 思想 如下 node rebuild t prev,t in,int l,int r l為陣列的開始開始位置的下標,r為陣列最尾部數字的下標 int n 0 rebuild root,prev,...
由前序遍歷和中序遍歷,求後序遍歷
若已知一棵二叉樹的前序序列是 b e f c g d h,中序序列是 f e b g c h d 則它的後序序列 前序遍歷 先遍歷根節點,再遍歷左孩子,最後遍歷右孩子。中序遍歷 先遍歷左孩子,再遍歷根節點,最後遍歷右孩子。所以,遍歷的序列也是這個規律。首先,看前序遍歷中b節點,它是第乙個節點,也是根...