leet116. 每个节点的右向指针

题目:

给定一个二叉树

    struct TreeLinkNode {
      TreeLinkNode *left;
      TreeLinkNode *right;
      TreeLinkNode *next;
    }

填充他的每个 next(下一个)指针,让这个指针指向其下一个右侧节点。如果找不到下一个右节点,则应该将 next(下一个)指针设置为 NULL

初始状态下,所有 next(下一个)指针 都被设置为 NULL

注意事项:

  • 您只能使用恒定的额外空间。
  • 你可以假设它是一棵完美二叉树(即所有叶子都在同一水平上,每个父节点有两个孩子)。

 

例如,鉴于以下完美二叉树,

         1
       /  \
      2    3
     / \  / \
    4  5  6  7

调用你的函数后,该树应该变成这样:

         1 -> NULL
       /  \
      2 -> 3 -> NULL
     / \  / \
    4->5->6->7 -> NULL

分析:

  1. 采用BFS遍历,每一层遍历后,遍历节点列表,列表中前一节点next指针指向后一节点

代码:

class Solution:
    # @param root, a tree link node
    # @return nothing
    def connect(self, root):

        nodes = [root]
        while nodes:
            temp = []
            for x in nodes:
                if x:
                    if x.left: temp.append(x.left)
                    if x.right: temp.append(x.right)
            for i,y in enumerate(temp[:-1]):
                y.next = temp[i + 1]
            nodes = temp

思考:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yzpwslc

您的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值