Python实现二叉树的非递归中序遍历
2024-09-04 21:21:24
思路:
1. 使用一个栈保存结点(列表实现);
2. 如果结点存在,入栈,然后将当前指针指向左子树,直到为空;
3. 当前结点不存在,则出栈栈顶元素,并把当前指针指向栈顶元素的右子树;
4. 栈不为空,循环2、3部。
代码如下,解决了leetcode94. Binary Tree Inorder Traversal:
# Definition for a binary tree node.
# class TreeNode(object):
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution(object):
def inorderTraversal(self, root):
"""
:type root: TreeNode
:rtype: List[int]
"""
ret = []
stack = []
while root or stack:
while root:
stack.append(root)
root = root.left
if stack:
t = stack.pop()
ret.append(t.val)
root = t.right
return ret
最新文章
- 用遗传算法GA改进CloudSim自带的资源调度策略(2)
- 美女jquery图片播放器插件
- php : 基础(1)
- Python错误和异常学习
- myrocks记录格式分析
- js中的console很强大
- 如何查看某个查询用了多少TempDB空间
- AngularJs 简单实现全选,多选操作
- QC学习三:Excel数据导入导出QC操作流程
- 解决Web部署 svg/woff/woff2字体 404错误(转)
- 符号渲染篇——Symbol
- EL表达式运算符
- ubuntu 新建zend framework 项目
- windows bat脚本编写
- 关于identifier was truncated to '255' characters
- C# 之 托付
- angularjs的forEach使用
- Flex动态获取数据,服务中断报错
- protobuf(quickStart)
- 两层c:forEach循环嵌套
热门文章
- MySQL实现计算两点之间的距离
- [转]vc中调用其他应用程序的方法(函数) winexec,shellexecute ,createprocess
- Try-Catch-Finally代码块中的return
- speech-to-text-wavenet
- tar 命令出现 Cowardly refusing to create an empty archive 问题详解
- springboot 出现 org.hibernate.LazyInitializationException: could not initialize proxy
- hive 调优(一)coding调优
- Linux命令行提交更新冲突
- Maven的New中没有Servlet问题(IDEA)
- 牛顿法与拟牛顿法(三) DFP算法