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

二叉树的前序遍历

https://www.nowcoder.com/practice/5e2135f4d2b14eb8a5b06fab4c938635

# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param root TreeNode类 
# @return int整型一维数组
#
class Solution:
    # def preorderTraversal(self , root: TreeNode) -> List[int]:
    #     # write code here
    #     """
    #     method_1: 根左右, 递归
    #     """
    #     rst = list()
    #     self.preorder(rst, root)
    #     return rst
    #     pass

    # def preorder(self, tre_:List[int], root: TreeNode):
    #     if root == None:
    #         return
        
    #     tre_.append(root.val)
    #     self.preorder(tre_, root.left)
    #     self.preorder(tre_, root.right)

    def preorderTraversal(self, root: TreeNode) -> List[int]:
        """
        method_2: 使用非递归的方法进行 二叉树前序遍历
        步骤: 
        step1: 判断树是否为空, 空树不遍历
        step2: 准备辅助栈, 首先记录根节点
        step3: 每次从栈中弹出一个元素,进行访问,然后验证该节点的左右子节点是否存在,存在就加入栈中,有限加入右节点
        """
        rsta = list()
        tmp_stack = list()

        if root == None:
            return []
        tmp_stack.append(root)

        while (tmp_stack):
            node = tmp_stack[-1]
            tmp_stack.pop()
            rsta.append(node.val)

            if node.right:
                tmp_stack.append(node.right)
            if node.left:
                tmp_stack.append(node.left)

        return rsta
        pass
		 二叉树的递归调用和非递归调用,应该熟读,会背

全部评论

相关推荐

头顶尖尖的程序员:我也是面了三四次才放平心态的。准备好自我介绍,不一定要背熟,可以记事本写下来读。全程控制语速,所有问题都先思考几秒,不要急着答,不要打断面试官说话。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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