ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Leetcode 145 python 二叉树的后序遍历

2019-02-28 10:50:04  阅读:237  来源: 互联网

标签:遍历 return python res 145 二叉树 root stack result


题意: 给定一个二叉树,返回它的后序遍历。
示例:

输入: [1,null,2,3]  
   1
    \
     2
    /
   3 

输出: [3,2,1]

中序遍历首先遍历左子树,然后访问根结点,最后遍历右子树。若二叉树为空则结束返回,否则:
(1)后序遍历左子树
(2)后序遍历右子树
(3)访问根结点

方法一: 递归

class Solution:
    def postorderTraversal(self, root: TreeNode) -> List[int]:
        if root == None:
            return []
        res = []
        res += self.postorderTraversal(root.left)
        res += self.postorderTraversal(root.right)
        res.append(root.val)
        return res

方法二: 入栈出栈,列表从前往后实现的是左右根遍历,从后往前实现的是根右左的遍历,换个角度思考算法

class Solution:  
    def inorderTraversal(self, root):
        """
        :type root: TreeNode
        :rtype: List[int]
        """
        result = list()  #存储最后结果
        if root == None:
            return result
        
        stack = list()  #栈
        while stack or root:
            if root != None:   
                stack.append(root)
                root = root.right
            else:
                root = stack.pop()
                result.append(root.val)
                root = root.right
               
                root = stack.pop()
                stack.append(root)

        return result

标签:遍历,return,python,res,145,二叉树,root,stack,result
来源: https://blog.csdn.net/weixin_43730955/article/details/88017558

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有