LeetCode從先序遍歷還原二叉樹

2021-10-07 07:27:14 字數 954 閱讀 5086

我們從二叉樹的根節點 root 開始進行深度優先搜尋。

在遍歷中的每個節點處,我們輸出 d 條短劃線(其中 d 是該節點的深度),然後輸出該節點的值。(如果節點的深度為 d,則其直接子節點的深度為 d + 1。根節點的深度為 0)。

如果節點只有乙個子節點,那麼保證該子節點為左子節點。

給出遍歷輸出 s,還原樹並返回其根節點 root。鏈結

在遍歷字串,確定節點深度和數值的同時維護乙個棧,用來儲存等待構建子樹的父節點。由於先序遍歷的先左後右,當節點入棧時,棧的size可代表下一層節點的level。如果當前節點的level == size,則將peek.left = cur_node,否則出棧元素,直到棧的size==level(由於後續字串遍歷到的節點為當前節點兄弟節點,或者當前節點祖輩的兄弟節點,所以size>level),peek.right = cur_node。最後,當前節點也入棧,等待後續節點構建它的子樹。

class

solution

else

deque.

peek()

.right = node;

} deque.

push

(node)

; level =0;

}else

}while

(deque.

size()

>1)

return deque.

peek()

;}int[

]getnum

(string s,

int pos)

return

newint

;}}

Leetcode 1028 從先序遍歷還原二叉樹

1,題目 我們從二叉樹的根節點 root 開始進行深度優先搜尋。在遍歷中的每個節點處,我們輸出 d 條短劃線 其中 d 是該節點的深度 然後輸出該節點的值。如果節點的深度為 d,則其直接子節點的深度為 d 1。根節點的深度為 0 如果節點只有乙個子節點,那麼保證該子節點為左子節點。給出遍歷輸出 s,...

LeetCode 1028 從先序遍歷還原二叉樹

我們從二叉樹的根節點 root 開始進行深度優先搜尋。在遍歷中的每個節點處,我們輸出 d 條短劃線 其中 d 是該節點的深度 然後輸出該節點的值。如果節點的深度為 d,則其直接子節點的深度為 d 1。根節點的深度為 0 如果節點只有乙個子節點,那麼保證該子節點為左子節點。給出遍歷輸出 s,還原樹並返...

leetcode 1028 從先序遍歷還原二叉樹

public treenode recoverfrompreorder string s 再確定結點的值 先將值初始化為0 int value 0 while icharacter.isdigit s i 構造樹的結點 treenode node new treenode value 插入到正確位置...