劍指offer 由前序中序遍歷重建二叉樹

2021-10-25 18:58:32 字數 1090 閱讀 8308

//前序遍歷和中序遍歷得出二叉樹,然後計算葉子節點的數目

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節點,它是第乙個節點,也是根...