我們從二叉樹的根節點 root 開始進行深度優先搜尋。
在遍歷中的每個節點處,我們輸出 d 條短劃線(其中 d 是該節點的深度),然後輸出該節點的值。(如果節點的深度為 d,則其直接子節點的深度為 d + 1。根節點的深度為 0)。
如果節點只有乙個子節點,那麼保證該子節點為左子節點。
給出遍歷輸出 s,還原樹並返回其根節點 root。
示例 1:
輸入:"1-2--3--4-5--6--7"
輸出:[1,2,5,3,4,6,7]
示例 2:
輸入:"1-2--3---4-5--6---7"
輸出:[1,2,5,3,null,6,null,4,null,7]
示例 3:
輸入:"1-401--349---90--88"
輸出:[1,401,null,349,88,90]
原始樹中的節點數介於 1 和 1000 之間。
每個節點的值介於 1 和 10 ^ 9 之間。
/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
//td為當前節點深度
treenode* dfs(int td)
//若當前節點深度與字串中項的深度不同,說明當前節點為空,返回空指標
if (td != depth) return nullptr;
//否則,計算字串中當前項的值
int val = 0;
while (i < len && s[i] != '-')
//生成新的指標,繼續進行遞迴
treenode* root = new treenode(val);
//令depth=0,因為字串會根據-的數量,計算該節點的深度值
depth = 0;
root->left = dfs(td + 1);
root->right = dfs(td + 1);
return root;}};
34 從先序遍歷還原二叉樹
題目描述 我們從二叉樹的根節點 root 開始進行深度優先搜尋。在遍歷中的每個節點處,我們輸出 d 條短劃線 其中 d 是該節點的深度 然後輸出該節點的值。如果節點的深度為 d,則其直接子節點的深度為 d 1。根節點的深度為 0 如果節點只有乙個子節點,那麼保證該子節點為左子節點。給出遍歷輸出 s,...
lettcode 從先序遍歷還原二叉樹
我們從二叉樹的根節點 root 開始進行深度優先搜尋。在遍歷中的每個節點處,我們輸出 d 條短劃線 其中 d 是該節點的深度 然後輸出該節點的值。如果節點的深度為 d,則其直接子節點的深度為 d 1。根節點的深度為 0 如果節點只有乙個子節點,那麼保證該子節點為左子節點。給出遍歷輸出 s,還原樹並返...
LeetCode從先序遍歷還原二叉樹
我們從二叉樹的根節點 root 開始進行深度優先搜尋。在遍歷中的每個節點處,我們輸出 d 條短劃線 其中 d 是該節點的深度 然後輸出該節點的值。如果節點的深度為 d,則其直接子節點的深度為 d 1。根節點的深度為 0 如果節點只有乙個子節點,那麼保證該子節點為左子節點。給出遍歷輸出 s,還原樹並返...