力扣144.⼆叉树的前序遍历 --python

二叉树的前序遍历:
解法:栈
迭代至栈或指针为空,向左 进行深度遍历 因前序为根–左--右,所以对每一不为空的节点入栈,并返回值

不断深度遍历,直至节点左指针left为空,则进行退栈,获取上一有效节点右指针right。如若右指针也为空,则再次退栈,检索上一节点的右指针
如若不为空,则返回其值,并入栈,并检索左节点,为空退栈检索右节点,也为空,则退栈。因其父节点已退栈,所以栈顶元素为其父节点的父节点,即开始遍历右子树。
直至栈及未遍历的节点为空,返回值

代码如下:

class Solution:
    def preorderTraversal(self, root: TreeNode) -> List[int]:
        stack=[]
        rtn=[]
        while stack or root:
            if root:
                rtn.append(root.val)
                stack.append(root)
                root=root.left
            else:
                flag=stack.pop()
                root=flag.right
        return rtn

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值