LeetCode Populating Next Right Pointers in Each Node
2016-03-15 10:12
525 查看
LeetCode解题之Populating Next Right Pointers in Each Node
原题
为二叉树的节点都添加一个next指针,指向跟它在同一高度的右边的节点,如果右边没有节点,就指向None。注意点:
最好只用常量的空间
这是一棵完全二叉树
例子:
输入:
[code] 1 / \ 2 3 / \ / \ 4 5 6 7
输出:
[code] 1 -> NULL / \ 2 -> 3 -> NULL / \ / \ 4->5->6->7 -> NULL
解题思路
这里采用了思路最清晰的解法,但是用的空间不是常量的。可以看出其实就是把树的每一层都串联起来了,要处理每一层的节点,可以使用广度优先遍历,把每一层的节点暂存在列表中,再把这些节点都连接起来。AC源码
[code]# Definition for binary tree with next pointer. class TreeLinkNode(object): def __init__(self, x): self.val = x self.left = None self.right = None self.next = None class Solution(object): def connect(self, root): """ :type root: TreeLinkNode :rtype: nothing """ if not root: return current_level = [root] while current_level: next_level = [] for node in current_level: if node.left: next_level.append(node.left) if node.right: next_level.append(node.right) for i in range(len(next_level) - 1): next_level[i].next = next_level[i + 1] current_level = next_level if __name__ == "__main__": None
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
相关文章推荐
- javascript创建node节点
- [LeetCode]117. Populating Next Right Pointers in Each Node II
- node.js入门(二) 模块 事件驱动
- node.js入门(一)
- [Node.js] Use "prestart" in scripts
- [Node.js] Using ES6 and beyond with Node.js
- node.js编写服务器
- LeetCode 25. Reverse Nodes in k-Group
- windows下安装nodejs简要步骤
- nodeJs--模块module.exports与实例化方法
- hadoop namenode进程参数调整
- nodejs安装提示express不是内部命令
- nodejs入门——搭建一个聊天室应用
- Nodejs v4.4.0API文档学习(1)简介
- 《超实用的Node.js代码段》连载一:获取Buffer对象字节长度
- 【honey_blog记】立flag!记录搭建node博客过程中的一点想法
- NodeJs开发目录
- leetcode 237. Delete Node in a Linked List
- node.js学习之react,redux,react-redux
- 【nodejs+ejs】如何给模板传参数?