給定乙個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下:
struct node
填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為 null。
初始狀態下,所有 next 指標都被設定為 null。
示例:
每行設定乙個行頭指標, 再設定乙個指標用於遍歷行的每乙個節點
迴圈出口:
易錯點及注意事項:
ac**如下:
/*
// definition for a node.
class node
node(int _val) : val(_val), left(null), right(null), next(null) {}
node(int _val, node* _left, node* _right, node* _next)
: val(_val), left(_left), right(_right), next(_next) {}
};*/
class
solution
ptr=ptr-
>next;
} lefthead=lefthead-
>left;
//注意此處不是ptr=ptr->left
}return root;}}
;
主要考察層次遍歷的使用, 通過佇列和bfs進行層次遍歷
注意c++stl的正確使用以及next連線兩個節點的正確位置
ac**如下:
class
solution
// 初始化佇列同時將第一層節點加入佇列中,即根節點
queue
> q;
q.push
(root)
;// 外層的 while 迴圈迭代的是層數
while
(!q.
empty()
)// 拓展下一層節點
if(node-
>left !=
nullptr)if
(node-
>right !=
nullptr)}
}// 返回根節點
return root;}}
;
這種方法巧妙就在於其利用cur與pre之間的關係分型別, 分步將不同型別的節點初始化next
具體如下圖:
//把下一層串聯成乙個鍊錶之後,讓他賦值給cur,
//後續繼續迴圈,直到cur為空為止
cur = dummy.next;
}return root;
}
填充每個節點的下乙個右側節點指標
給定乙個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下 public class node填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為 null。初始狀態下,所有 next 指標都被設定為 null...
255 填充每個節點的下乙個右側節點指標
題目描述 給定乙個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下 struct node 填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為 null。初始狀態下,所有 next 指標都被設定為 null...
116 填充每個節點的下乙個右側節點指標
給定乙個完美二叉樹,其所有葉子節點都在同一層,每個父節點都有兩個子節點。二叉樹定義如下 struct node 填充它的每個 next 指標,讓這個指標指向其下乙個右側節點。如果找不到下乙個右側節點,則將 next 指標設定為 null。初始狀態下,所有 next 指標都被設定為 null。示例 你...