Leetcode——94.二叉樹的中序遍歷

大寫的ZDQ發表於2019-02-26

給定一個二叉樹,返回它的中序 遍歷。

示例:

輸入: [1,null,2,3]
1

2
/
3

輸出: [1,3,2]
進階: 遞迴演算法很簡單,你可以通過迭代演算法完成嗎?

思路:就用非遞迴來寫,先一股腦把左邊一條線全部push到底(即走到最左邊),然後node最終為None了就開始pop stack了,然後因為pop出來的每一個node都是自己這棵樹的root,所以看看它有沒有右孩子,沒有那肯定繼續pop,有的話自然而然右孩子是下一個要被訪問的節點。

在這裡插入圖片描述

class Solution:
    def inorderTraversal(self, root: 'TreeNode') -> 'List[int]':
        if not root:
            return []
        stack = []
        node = root
        res = []
        while node or stack:
            while node:
                stack.append(node)
                node = node.left
            node = stack.pop()
            res.append(node.val)
            node = node.right
        return res

相關文章