我們從二叉樹的根節點 root 開始進行深度優先搜尋。
在遍歷中的每個節點處,我們輸出 d 條短劃線(其中 d 是該節點的深度),然後輸出該節點的值。(如果節點的深度為 d,則其直接子節點的深度為 d + 1。根節點的深度為 0)。
如果節點只有乙個子節點,那麼保證該子節點為左子節點。
給出遍歷輸出 s,還原樹並返回其根節點 root。
輸入:"1-2--3--4-5--6--7"
輸出:[1,2,5,3,4,6,7]
class
solution
for(
int w=numf.
size()
-1;w>=
0;w--
)/*********************計算數字*******************end******/
head-
>val=value;
bin(head,
0,flag)
;return head;
} vector<
int>
bin(treenode* tree,
int layer,
int index)
for(
;ilength()
;i++
) result.
push_back
(thislayer)
; result.
push_back
(i);
if(thislayer<=layer)
return result;
/*********************計算數字*************************/
vector<
int> nums;
int value=0;
while
(isize()
&&data[i]
!='-'
)for
(int w=nums.
size()
-1;w>=
0;w--
)/*********************計算數字**********************end***/
treenode * left=
new treenode;
left-
>val=value;
tree-
>left=left;
vector<
int> nextresult=
bin(tree-
>left,thislayer,i)
;//處理右節點
treenode * right=
new treenode;
if(nextresult[0]
==thislayer)
for(
int w=nums1.
size()
-1;w>=
0;w--
)/*********************計算數字***********************end**/
right-
>val=value1;
tree-
>right=right;
vector<
int> next=
bin(tree-
>right,thislayer,i1)
;return next;
}else
}private
: treenode* head;
string data;
};
需要考慮兩點:
(1)遍歷到葉子結點時要如何處理
(2)當前資料如何轉化為整型(因為是string型別,需要轉化為int),以及轉化後傳入下乙個結點時string字串中的位置
整體思路是沒到乙個結點就認定此點是根節點,然後遍歷』-'得到是否是當前深度的值,如果不是,就回溯到上一層,否則證明此點是左結點,然後再向下遍歷去尋找右節點。
如果到最後都沒有找到就會返回邊界點的result陣列向量,此時預設right為null,否則初始化node->right
邊界條件
(1)遍歷得到的 『-』 數量不位於當前層(小於或者等於上一層的層值資料——即遞迴函式傳入的layer引數)
(2)到達輸入字串的末尾
整體**編寫過程中遍歷字串將string轉化為int有些贅餘
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 插入到正確位置...