题解 | #二叉树的中序遍历#

二叉树的中序遍历

http://www.nowcoder.com/practice/0bf071c135e64ee2a027783b80bf781d

思路

  1. 中序肯定是要使用迭代法啦;推荐看看“代码随想录”,确实很适合入门学习
  2. 使用统一格式迭代法,中序会好写很多
    1. 关键在于将遍历与操作的流程分割
    2. 同时也适合遍历过程中执行各种操作的问题
  3. 需要注意,由于使用 stack,所以代码顺序需要修改:“左中右” -> “右左中”,如果是 deque 和 popleft,那就同样代码顺序即可

代码

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @return int整型一维数组
#
class Solution:
    def inorderTraversal(self , root: TreeNode) -> List[int]:
        # write code here
        if not root: return []
        
        stack = [root]
        res = []
        while stack != []:
            cur = stack.pop()
            if cur != None:
                if cur.right: stack.append(cur.right)
                stack.append(cur)
                stack.append(None)
                if cur.left: stack.append(cur.left) 
            else:
                cur = stack.pop()
                res.append(cur.val)
                
        return res
全部评论

相关推荐

09-01 11:31
门头沟学院 Java
buul:七牛云的吧,感觉想法是好的,但是大家没那么多时间弄他这个啊。。。不知道的还以为他是顶尖大厂呢还搞比赛抢hc,只能说应试者的痛苦考察方是无法理解的,他们只会想一出是一出
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务