ITPub博客

首页 > 应用开发 > Python > 刷题系列 - 在二叉树中,为每个节点关联其右相邻节点

刷题系列 - 在二叉树中,为每个节点关联其右相邻节点

原创 Python 作者:张国平 时间:2020-02-10 23:52:30 0 删除 编辑

继续刷题,题目如下图

如果用C描述的话,就是一个二叉树节点定义包括右节点指针,左节点指针,和右相连指针;给出一个二叉树,维护其右相邻指针,如果是最右边节点,则指针为空。

struct Node {
  int val;
  Node *left;
  Node *right;
  Node *next;
}

思路其实很简单,这个可以按层分析二叉树,首先把当前层节点按照从左到右放入一个队列中,遍历这个队列;如果不是队列最后一个节点,则按照当前节点的next就是下一个节点;同时把每一个节点的子节点按照从左到右放入下一层队列;然后 遍历下一层队列;直到这个队列为空,遍历完成。

代码如下:

"""
# Definition for a Node.
class Node:
    def __init__(self, val: int = 0, left: 'Node' = None, right: 'Node' = None, next: 'Node' = None):
        self.val = val
        self.left = left
        self.right = right
        self.next = next
"""
class Solution:
    def connect(self, root: 'Node') -> 'Node':
        if root == None:
            return None
        else:
            nodeList = []
            nodeList.append(root)
            while nodeList != []:
                nextList = []
                for i in range(len(nodeList)):
                    if nodeList[i].left != None:
                        nextList.append(nodeList[i].left)
                    if nodeList[i].right != None:
                        nextList.append(nodeList[i].right)
                    if i!= len(nodeList)-1:
                        nodeList[i].next = nodeList[i+1]
                nodeList = nextList
            return root


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22259926/viewspace-2675050/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
SAP 金融风险管理产品专家

注册时间:2009-08-05

  • 博文量
    229
  • 访问量
    635953