114二叉树的前序遍历

# Definition for a binary tree node.# 前序遍历的意思是先遍历根节点,而后遍历左子树,最后是右子树# 所以这道题能够用递归的方法直接解出来。class TreeNode:    def __init__(self, x):        self.val = x        self.left = None        self.right = Nonefrom typing import Listclass Solution:    def preorderTraversal1(self, root: TreeNode) -> List[int]:        self.res = []        self.dfs(root)        return self.res    def dfs(self,root):        if not root :return        # 先遍历根节点        self.res.append(root.val)        # 而后遍历左子树        self.dfs(root.left)        # 而后是右子树        self.dfs(root.right)    # 下边是迭代的方法。    def preorderTraversal(self, root: TreeNode) -> List[int]:        if not root :return []        # 将根节点压入栈        stack,res = [root],[]        # 当栈为空的时候,表明全部的节点都遍历了        while stack:            # 弹出节点            node = stack.pop()            # 判断节点是否为空            if node:                # 将节点放入列表                res.append(node.val)                # 将右节点压入栈                if node.right :                    stack.append(node.right)                # 将左节点压入栈                if node.left :                    stack.append(node.left)        return res
相关文章
相关标签/搜索