首页 > 其他分享 >day14| 94.二叉树的中序遍历;144.二叉树的前序遍历;145.二叉树的后序遍历

day14| 94.二叉树的中序遍历;144.二叉树的前序遍历;145.二叉树的后序遍历

时间:2023-04-02 13:12:20浏览次数:54  
标签:遍历 val res 前序 right 二叉树 root self left

94. 二叉树的中序遍历

 

思路:

1. 找出重复的子问题

  这个重复的子问题是:先遍历左子树、再取根节点、最后遍历右子树

2. 确定终止条件

  当节点为空是,返回

 

代码如下:

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:

    def inOrder(self, root:TreeNode, res):
        if root == None:
            return
        self.inOrder(root.left, res)
        res.append(root.val)
        self.inOrder(root.right, res)

    def inorderTraversal(self, root: TreeNode) -> List[int]:
        res = []
        self.inOrder(root, res)
        return res

 

144. 二叉树的前序遍历

 

同上一题,改一改append和函数递归调用的顺序即可

 

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        res=[]
        self.midOrder(root,res)
        return res
    

    def midOrder(self,root:TreeNode,res):
        if root == None:
            return
        res.append(root.val)
        self.midOrder(root.left,res)
        self.midOrder(root.right,res)

 

 

145. 二叉树的后序遍历

 

同样,改一改顺序即可

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def postorderTraversal(self, root: Optional[TreeNode]) -> List[int]:
        res=[]
        self.postOrder(root,res)
        return res
    

    def postOrder(self,root:TreeNode,res):
        if root == None:
            return
        self.postOrder(root.left,res)
        self.postOrder(root.right,res)
        res.append(root.val)

 

标签:遍历,val,res,前序,right,二叉树,root,self,left
From: https://www.cnblogs.com/cp1999/p/17280279.html

相关文章

  • jQuery遍历_02
       ......
  • jQuery遍历_01
         ......
  • Python遍历时删除元素问题(附深拷贝与浅拷贝介绍)
    问题有时候,我们希望用Python遍历一个列表(或其他可迭代对象),如果其中有我们不需要的元素就把它删除并继续遍历。如以下代码段,我们本希望打印1、3,可最后却只打印了1。a=[1,2,3]foriina:ifi==2:a.remove(i)else:print(i)分析其实,之所以......
  • 代码随想录Day17-Leetcode110.平衡二叉树,257. 二叉树的所有路径,404.左叶子之和
    110.平衡二叉树题目链接:https://leetcode.cn/problems/balanced-binary-tree/一个显然但似乎不太高效的方法是:通过递归获取左右子树高度,判断差;然后递归判断左右结点;那么一个显然的改进就是后序遍历/***Definitionforabinarytreenode.*functionTreeNode(val......
  • 二叉树中和为某一值的路径
    classSolution{public:vector<vector<int>>res;vector<int>path;voiddfs(TreeNode*root,intsum,intt){t+=root->val;path.push_back(root->val);if(root->left)dfs(root-&......
  • 数据结构之二叉树
    树是一种非线性数据结构,是由n(n>=0)个有限节点组成的一个具有层次关系的集合。树的逻辑结构看起来像一棵倒挂的树,根朝上,叶子朝下。树一般是递归定义的,每一棵树都可以认为是由根和其子树构成,且各个子树不相交。树树的相关概念节点的度:一个节点含有的子树的个数称为该节点的度;叶节......
  • 二叉搜索树的后序遍历序列
    classSolution{public:booldfs(vector<int>q,intl,intr){if(l>=r)returntrue;introot=q[r];intidx=l;for(;idx<r;idx++)if(q[idx]>root)break;intt=idx;......
  • LeetCode 94 二叉树的中序遍历
    LeetCode|94.二叉树的中序遍历给定一个二叉树的根节点root,返回它的中序 遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[1]输出:[1]提示:树中节点数目在范围[0,100]内-100<=Node.val<=100迭代实现:......
  • 广度优先遍历
    概述广度优先搜索的设计思想广度优先搜索以顶点u为起始点,依次访问和u有路径相通且路径长度为1、2、…的顶点。广度优先搜索的基本思想是访问顶点u,然后依次访问u的各个未被访问的邻接点v1、v2、…、vk,分别从v1、v2、…、vk出发依次访问它们未被访问的邻接点至图......
  • python 遍历指定文件夹指定类型文件
    importospath="d:\\python37"filetype=".pdf"#遍历包括子文件夹defget_filename(path,filetype):filetype1=filetype.upper()#print(filetype)name=[]final_name=[]forroot,dirs,filesinos.walk(path):foriinf......