我們從二叉樹的根節點 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 插入到正確位置...