每个节点的右向指针
 

 

给定一个二叉树

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 # Definition for binary tree with next pointer.
 2 # class TreeLinkNode:
 3 #     def __init__(self, x):
 4 #         self.val = x
 5 #         self.left = None
 6 #         self.right = None
 7 #         self.next = None
 8
 9 class Solution:
10     # @param root, a tree link node
11     # @return nothing
12     def connect(self, root):
13         if root is None:
14             return root
15         tree = [[root]]
16         i = 0
17         while i < len(tree):
18             cur = tree[i]
19             layer = []
20             for c in cur:
21                 if c.left is not None:
22                     layer.append(c.left)
23                 if c.right is not None:
24                     layer.append(c.right)
25
26             if layer:
27                 tree.append(layer)
28
29             i += 1
30         for l in tree:
31             for i in range(len(l)-1):
32                 l[i].next = l[i+1]
33         

转载于:https://www.cnblogs.com/Lin-Yi/p/9704126.html

leetcode 每个结点的右指针 python相关推荐

  1. LeetCode-Populating Next Right Pointers in Each Node-填充结点的右指针-二叉树递归

    https://oj.leetcode.com/problems/populating-next-right-pointers-in-each-node/ 构造一个按深度索引的数组,存储的当前遍历的结 ...

  2. 树和森林转二叉树,二叉树无右孩子(或右指针域为空)的结点个数计算思路

    前提是知道非终端结点(分支结点)的个数,假设非终端结点的个数为n 1.对于树转二叉树: 因为转化规则是"左孩子右兄弟",如果有n个分支结点,因为每个分支结点都会有孩子,这些孩子都是 ...

  3. LeetCode 刷题之路(python版)

    摘自:https://blog.csdn.net/qq_32384313/article/details/90745354 LeetCode 刷题之路(python版) 小坏wz 2019-06-02 ...

  4. 单链表:头结点和头指针的实现方式

    链式存储是什么样的结构? 链式存储结构的特点使用任意的存储单元存储线性表的数据元素,存储单元可以使连续的也可以是不连续的,因此,为了表示每个数据元素和下一个元素的关系,除了存储本身的信息之外,还需要存 ...

  5. 数据结构:试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来

    题目 试设计一个算法,改造一个带表头结点的双向链表,所有结点的原有次序保持在各个结点的右链域rLink中,并利用左链域ILink把所有结点按照其值从小到大的顺序连接起来 分析 Template < ...

  6. leetcode 《简单》 数学部分 Python实现

    leetcode <简单> 数学部分 Python实现 ''' Fizz Buzz 写一个程序,输出从 1 到 n 数字的字符串表示.1. 如果 n 是3的倍数,输出"Fizz& ...

  7. leetcode 《简单》 设计问题 Python实现

    leetcode <简单> 设计问题 Python实现''' Shuffle an Array 打乱一个没有重复元素的数组.示例: // 以数字集合 1, 2 和 3 初始化数组. int ...

  8. LeetCode 排序和搜索简单部分 Python实现

    #2018-06-07 June Thursday the 23 week, the 158 day SZ #LeetCode 排序和搜索 简单部分 Python实现 '''并两个有序数组 注意题目要 ...

  9. 数据结构中的头结点和头指针

    数据结构中的头结点和头指针 (1)头指针: 头指针指链表指向第一个结点的指针,头指针具有标识作用,若链表有头结点,那么头指针即为指向头结点的指针. (2)头结点:头结点是为了方便而设置,它放在链表中第 ...

最新文章

  1. 又做出行系统又组建车队,雷诺-日产、Transdev的三方联盟要发大招了
  2. Windows系统下搭建MPI环境
  3. Ubuntu/Deepin--How to remove packeges?
  4. SecureCRT学习之道:SecureCRT经常使用快捷键设置与字体设置方法
  5. SAP CRM One Order函数CRM_Object_FILL_OW的设计原理
  6. c++STL的反向迭代器
  7. 前端学习(2044)vue之电商管理系统电商系统之优化configwebpack和chainwebpack
  8. phpStorm提示Cannot save files解决 js___jb_tmp___
  9. pythonfor循环加2_初中生教你编程---python(for循环)part 2
  10. .net core linux服务,.netcore在linux服务生成
  11. android 代码实现back键功能
  12. 简单的C语言程序介绍(重点理解),超详细基础代码解析
  13. BlueCoat ProxySG配置FTP代理
  14. sql server2000挂起的解决方法
  15. 【转】巧舟的逆转裁判开发手记~
  16. 数据结构——邻接表Adjacency List
  17. 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装
  18. HTML+CSS+JAVASCRIPT 高仿低配网页版网易云音乐播放器 1
  19. 【转】专家推荐 13个优秀的UML建模工具软件
  20. WEB-easy_upload

热门文章

  1. 递推极大似然算法实现
  2. win10电脑黑屏只有鼠标箭头_电脑开机就黑屏,只显示鼠标怎么办?别急,简单几步,轻松解决!...
  3. java随机抽题系统_2020税务师机考模拟系统全新上线,智能题库 随机组卷,快来试手...
  4. eclipse如何开发python
  5. 任意切换线程的工具类
  6. 转载︱案例 基于贪心算法的特征选择
  7. redis高级进阶(2)
  8. riot.js教程【二】组件撰写准则、预处理器、标签样式和装配方法
  9. oracle “**with as**”短语,也叫做子查询部分。
  10. UVA12897 - Decoding Baby Boos