34 從先序遍歷還原二叉樹

2021-09-26 03:34:46 字數 1616 閱讀 1971

題目描述:

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

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

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

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

示例 1:

emm這不算困難題吧,把字串分割,將其節點和對應的深度分別儲存,如果當前的深度為3那麼我們需要從list中找深度為2的,看其left是否為空,不為空那麼就賦值為右子樹,因為是先序遍歷所以不會出現覆蓋的情況。

**:

class solution 

int start = 0;

int getfirst = s.indexof("-");

if(getfirst == -1)

treenode root = new treenode(integer.valueof(s.substring(0, getfirst)));

root.left = null;

root.right = null;

listlistnode = new arraylist<>();

listlistdeep = new arraylist<>();

listdeep.add(0);

listnode.add(root);

char tem = s.tochararray();

for (int i = getfirst; i < tem.length;)

// 得到深度

int num = j - i;

int temj = j;

// 得到節點的值

while (temj < tem.length && tem[temj] != '-')

i = temj;

int value = integer.valueof(s.substring(j, temj));

treenode temnode = new treenode(value);

temnode.left = null;

temnode.right = null;

int getindex = listdeep.size() - 1;

for (; getindex >= 0; getindex --)

}treenode node = listnode.get(getindex);

if(node.left == null)else

listdeep.add(num);

listnode.add(temnode);

} return root; }}

lettcode 從先序遍歷還原二叉樹

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

LeetCode從先序遍歷還原二叉樹

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

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

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