LeetCode Flatten Binary Tree to Linked List
来源:互联网 发布:简便算法计算题 编辑:程序博客网 时间:2024/05/14 03:25
LeetCode解题之Flatten Binary Tree to Linked List
原题
把一棵二叉树变为链表,也就是一棵所有节点要么没有子节点,要么只有右节点的二叉树。
注意点:
- 无
例子:
输入:
1 / \ 2 5 / \ \ 3 4 6
输出:
1 \ 2 \ 3 \ 4 \ 5 \ 6
解题思路
可以看出来变化后每个节点其实都是指向了在先序遍历中的后一个节点。所以就通过栈的方式来先序遍历原树,如果一个节点有左节点,那么把它的右节点压栈(如果有的话),右指针指向原来的左节点;如果一个节点没有子节点,应该把它的右指针指向栈顶的节点。
AC源码
# Definition for a binary tree node.class TreeNode(object): def __init__(self, x): self.val = x self.left = None self.right = Noneclass Solution(object): def flatten(self, root): """ :type root: TreeNode :rtype: void Do not return anything, modify root in-place instead. """ stack = [] while root: if root.left: if root.right: stack.append(root.right) root.right, root.left = root.left, None if not root.right and stack: root.right = stack.pop() root = root.rightif __name__ == "__main__": None
欢迎查看我的Github (https://github.com/gavinfish/LeetCode-Python) 来获得相关源码。
0 0
- LeetCode: Flatten Binary Tree to Linked List
- LeetCode Flatten Binary Tree to Linked List
- LeetCode: Flatten Binary Tree to Linked List
- [Leetcode] Flatten Binary Tree to Linked List
- [LeetCode] Flatten Binary Tree to Linked List
- Leetcode: Flatten Binary Tree to Linked List
- leetcode Flatten Binary Tree to Linked List
- LeetCode Flatten Binary Tree to Linked List
- LeetCode - Flatten Binary Tree to Linked List
- 【leetcode】Flatten Binary Tree to Linked List
- [LeetCode]Flatten Binary Tree to Linked List
- [Leetcode]Flatten Binary Tree to Linked List
- [leetcode]Flatten Binary Tree to Linked List
- LeetCode-Flatten Binary Tree to Linked List
- [leetcode] Flatten Binary Tree to Linked List
- LeetCode - Flatten Binary Tree to Linked List
- LeetCode:Flatten Binary Tree to Linked List
- [LeetCode] Flatten Binary Tree to Linked List
- 信号(待填)
- Unity 资源管理
- union all和union的区别
- 初入android,android studio熟悉(三)
- python的unittest架构公共参数token提取
- LeetCode Flatten Binary Tree to Linked List
- 中国剩余定理
- Trie树
- Leetcode:198. House Robber(JAVA)
- Operations on Surface_mesh in CGAL
- 错排公式
- 互联网公关策略与实战
- iOS开源项目收集整理
- linux下jdk安装