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