根據前序遍歷構建二叉樹

2021-09-27 07:32:58 字數 1069 閱讀 7674

//如何只有前序遍歷(帶空節點的)建立二叉樹

/*1.無法直接切割為左右子樹序列

2.在建立樹的過程中,會得到用掉了多少個節點

*///返回兩個值,建立好樹的根節點,用掉的個數,用乙個類包起來

public

class

solution9020

}//build tree rturn value

private

static

class

btrv

btrv buildtree

(list

preorder)

//找到根的值

int rootvalue=preorder.

get(0)

;if(rootvalue==

'#')

//傳給左子樹去建立

btrv leftreturn=

buildtree5

(preorder.

sublist(1

,preorder.

size()

)); 建立好的左子樹的根 used是用掉的節點的個數

btrv rightreturn=

buildtree5

(preorder.

sublist(1

+leftreturn.

.used,preorder.

size()

)); treenode root=

newtreenode

(rootvalue)

; root.left=leftreturn.root;

root.right=rightreturn.root;

//返回最終結果(btrv型別)

btrv returnvalue=

newbtrv()

; returnvalue.root=root;

returnvalue.used=

1+leftreturn.used+rightreturn.used;

return returnvalue;

}}

重建二叉樹,根據前序中序遍歷構建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。前序遍歷 根左右 中序遍歷 左根右 根據前序遍歷我們可以知道根節點,根據中序遍歷我們可以知道根節點的左右子樹結點有哪些。如 前序 中...

前序遍歷二叉樹

題目 給定乙個二叉樹,返回它的 前序 遍歷。示例 輸入 1,null,2,3 輸出 1,2,3 方法一 遞迴 這是最容易想到且最容易實現的演算法。definition for a binary tree node.struct treenode treenode int x val x left n...

重建二叉樹 根據前序遍歷和中序遍歷構建二叉樹

輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。思路 1.前序遍歷的第乙個節點一定是根結點。前序遍歷的乙個節點要麼是相鄰前乙個節點的左子樹 右子樹或者更靠近前面節點的右子樹。如何確...