1028 從先序遍歷還原二叉樹。 深搜

2022-05-25 05:39:07 字數 1287 閱讀 4252

我們從二叉樹的根節點 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,還原樹並返...