提交 c71a9c07 编写于 作者: 梦境迷离's avatar 梦境迷离

Merge branch 'master' of github.com:jxnu-liguobin/cs-summary-reflection

......@@ -66,6 +66,7 @@
52. [二叉搜索树的范围和](./solution/tree/leetcode_938_.py)
53. [路径总和 II](./solution/tree/leetcode_113_.py)
54. [填充每个节点的下一个右侧节点指针](./solution/tree/leetcode_116_.py)
55. [填充每个节点的下一个右侧节点指针 II](./solution/tree/leetcode_117_.py)
......
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# coding=utf-8
"""
117. 填充每个节点的下一个右侧节点指针 II
"""
class Solution:
"""
0.分三种情况
1.如果根节点包含左右子节点则通过root.left.next = root.right连接
2.根节点只有左节点的情况则找到同层节点中离此节点最近的一个进行相连即:root.left.next = getNextNode(root.next)
3.根节点只包含右节点的情况则找到同层节点中离此节点最近的一个进行相连即:root.right.next = getNextNode(root.next)
4.重复1进行dfs递归
5.注意:递归时要先递归右子树,否则上级节点next关系没建好,下级无法成功getNextNode
"""
def connect(self, root: 'Node') -> 'Node':
def getNextNode(root: Node):
if not root:
return None
if root.left:
return root.left
if root.right:
return root.right
if root.next:
return getNextNode(root.next)
def dfs(root: Node):
if root:
if root.left and root.right:
root.left.next = root.right
if root.left and not root.right:
root.left.next = getNextNode(root.next)
if root.right:
root.right.next = getNextNode(root.next)
dfs(root.right)
dfs(root.left)
dfs(root)
return root
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册