lintcode 前序遍歷和中序遍歷樹構造二叉樹

2021-09-07 05:06:18 字數 1299 閱讀 5394

解題

前序遍歷和中序遍歷樹構造二叉樹

根據前序遍歷和中序遍歷樹構造二叉樹.

樣例給出中序遍歷:[1,2,3]和前序遍歷:[2,1,3]. 返回如下的樹:

2

/ \1 3

注意你可以假設樹中不存在相同數值的節點

解題和上一題很類似的。

前序遍歷:根左右

中序遍歷:左根右

/**

* definition of treenode:

* public class treenode

* } */

public

class

solution

public

int findposition(int inorder,int istart,int iend,int

r)

public treenode buildtree(int preorder,int pstart,int pend,int inorder,int istart,int

iend)

int r =preorder[pstart];

int position =findposition(inorder,istart,iend,r);

treenode root = new

treenode(r);

//左子樹

//前序遍歷的左子樹 起始位置:pstart + 1 結束位置:pstart + (position - 1 -istart + 1)

//中序遍歷的左子樹 起始位置:istart 結束位置 position -1

root.left = buildtree(preorder,pstart + 1,pstart + (position - 1 -istart + 1),inorder,istart,position-1);

//右子樹

//前序遍歷的右子樹 起始位置 pstart + (position - 1 -istart + 1) + 1 結束位置:pend

//中序遍歷的右子樹 起始位置:position + 1 結束位置:iend

root.right = buildtree(preorder,pstart + (position - 1 -istart + 1) + 1,pend,inorder,position + 1,iend);

return

root;

}}

LintCode 前序遍歷和中序遍歷樹構造二叉樹

根據前序遍歷和中序遍歷樹構造二叉樹.注意事項 你可以假設樹中不存在相同數值的節點 樣例給出中序遍歷 1,2,3 和前序遍歷 2,1,3 返回如下的樹 2 13 中序遍歷 遞迴遍歷當前節點的左子樹 當前節點 右子樹。後序遍歷 遞迴遍歷當前節點的左子樹 右子樹 當前節點。前序遍歷 遞迴遍歷當前節點的當前...

前序遍歷 中序遍歷 後序遍歷

只要是搞計算機的,對資料結構中二叉樹遍歷都不陌生,但是如果用到的機會不多那麼就會慢慢淡忘,溫故而之新才是最好的學習方式,現在就重新溫習一下這方面的知識。首先我想先改變這幾個遍歷的名字 前根序遍歷,中根序遍歷,後根序遍歷 前中後本來就是相對於根結點來說的,少乙個字會產生很多不必要的誤解。1.前根序遍歷...

前序遍歷 中序遍歷 後序遍歷

遍歷是針對根節點的 前序遍歷順序 根節點 左子樹 右子樹 中序遍歷順序 左子樹 根節點 右子樹 後序遍歷順序 左子樹 右子樹 根節點 深入一點去理解這個排序順序是這樣的 前序遍歷 首先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。在遍歷左 右子樹時,仍然先訪問根結點,然後遍歷左子樹,最後遍歷右子樹。中...