leetcode刷题笔记--填充每个节点的下一个右侧节点指针

懵逼了看到这个题目。感觉用什么去做呢,先序后序中序遍历好像都不行。利用栈呢,又不知道怎么利用栈进行层次遍历。我个人觉得这道题的关键就是建立指针,然后判断其同层次右节点是否存在,还有一个就是层次遍历。不过可能是我想复杂了,因为写了这么多道题,还没遇到层次遍历的。挠头jpg

让我来看看层次遍历是怎么个回事

首先是一个循环,判断是队列是否为空,然后在循环里面用size记录队列的尺寸,然后for循环,如果遍历这么多尺寸的队列,遍历的时候按照规则:先去除队头元素赋给节点指针,然后弹出。然后当没弹完的是偶,依次将node类型的指针的下一个指向的节点,(其实就是指向下一个节点的指针)将其赋值给他,然后拓展下一层节点,就是说如果下一层节点不为空,将其塞进队列,左右节点各做一次判断就行了

然后跳出整个循环,返回根节点

Over

讲一讲具体的代码吧,大概就是:

Class Solution{

Public:

        node *connect(node* root){

If(root==nullptr){

Return root;

}

Queue<Node*> Q;

Q.push(root);

While(!Q.empty()){

Int size=Q.size();

For(int i=0;i<size;i++){

Node* node=q.front();

q.pop();

If(i<size-1){

Node->next=q.front();

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值