首页 > 编程语言 >算法学习day14二叉树part01-94、144、145

算法学习day14二叉树part01-94、144、145

时间:2023-07-11 22:01:07浏览次数:42  
标签:144 遍历 List day14 二叉树 root public result

package SecondBrush.Tree;

import java.util.ArrayList;
import java.util.List;

/**
 * 94. 二叉树的中序遍历
 * 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。
 * */

public class BinaryTreeInorderTraversal_94 {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        inorder(root, res);
        return res;
    }

    public void inorder(TreeNode root, List<Integer> result){
        if (root == null){
            return;
        }
        inorder(root.left,result);
        result.add(root.val);
        inorder(root.right,result);
    }

}
package SecondBrush.Tree;

import java.util.ArrayList;
import java.util.List;

/**
 * 145. 二叉树的后序遍历
 * 给你一棵二叉树的根节点 root ,返回其节点值的 后序遍历 。
 *
 * */

public class BinaryTreePostorderTraversal_145 {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        postorder(root, res);
        return res;
    }

    public void postorder(TreeNode root,List<Integer> result){
        if (root == null){
            return;
        }
        postorder(root.left,result);
        postorder(root.right,result);
        result.add(root.val);

    }

}
package SecondBrush.Tree;
/**
 * 144. 二叉树的前序遍历
 * 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。
 * */

import java.util.ArrayList;
import java.util.List;

/**
 * 递归法:
 * 前序遍历,最终输出至一个list里面
 * 所以先将 中节点加进去,然后递归root.left,root.right
 * */

public class BinaryTreePreorderTraversal_144 {
    public List<Integer> preorderTraversal(TreeNode root){
        List<Integer> result = new ArrayList<Integer>();
        preorder(root,result);
        return result;
    }

    public void preorder(TreeNode root, List<Integer> result){
        if (root == null){
            return;
        }
        result.add(root.val);
        preorder(root.left,result);
        preorder(root.right,result);
    }

}

 

标签:144,遍历,List,day14,二叉树,root,public,result
From: https://www.cnblogs.com/lipinbigdata/p/17546058.html

相关文章

  • LeetCode 剑指 Offer 08. 二叉树的下一个节点
    题目:二叉树的下一个节点给定一棵二叉树的其中一个节点,请找出中序遍历序列的下一个节点。(树的后继)注意:如果给定的节点是中序遍历序列的最后一个,则返回空节点;二叉树一定不为空,且给定的节点一定不是空节点;解题思路二叉树的中序遍历:{[左子树],根节点,[右子树]}如图所示......
  • 洛谷P1443:马的遍历--题解
    写在前面这是蒟蒻第一篇题解。作为一名没带脑子的初中生的第一篇题解,本题解必定存在诸多错误,给您带来的不便敬请谅解。对于不足之处与错误,还请多多包涵,并欢迎批评指正!本题目来自于洛谷,网址https://www.luogu.com.cn/problem/P1443。非营利性,侵权请联系删除。题目详情马的遍历......
  • 【算法】根据二叉树的级别返回排序后的元素列表
    根据给定的Node树节点,返回包含按级别排序的树中元素的列表,这意味着根元素位于第一位,然后根子元素(从左到右)位于第二位和第三位,依此类推。1publicclassNode2{3publicNodeLeft;4publicNodeRight;5publicintValue;67publicNode(No......
  • 1644 题「二叉树的最近公共祖先 II
    对于这道题来说,p和q不一定存在于树中,所以你不能遇到一个目标值就直接返回,而应该对二叉树进行完全搜索(遍历每一个节点),如果发现p或q不存在于树中,那么是不存在LCA的。  ......
  • 二叉树解题的
    先在开头总结一下,思维模式分两类:https://labuladong.github.io/algo/2/19/33/1、是否可以通过遍历一遍二叉树得到答案?如果可以,用一个traverse函数配合外部变量来实现,这叫「遍历」的思维模式。2、是否可以定义一个递归函数,通过子问题(子树)的答案推导出原问题的答案?如果可以,......
  • 题:二叉树中m是n的祖先,通过(后序遍历)可以找到m到n的路径
     选项:先序?中序?后序?层次? 题解:1.首先是对路径的解释:访问一个结点x时,栈中结点恰好是x结点的所有祖先,从栈底到栈顶所有结点加上x结点,就构成了从根结点到x结点的一条路径。2.分析:为什么不是先序遍历?(第一次做题时以为这个路径指的是遍历的结果,那先序自然就满足,但这个路径不是遍历......
  • Day14-设计模式之迭代器模式
    设计模式之迭代器模式一、概念定义:提供一种遍历集合元素的统一接口,用一致的方法遍历集合元素,不需要知道集合对象的底层表示,即:不暴露其内部的结构意图:如果我们的集合元素是用不同方式实现的,有数组、集合或者其他方式。当客户端要遍历这些集合元素的时候就要使用多种遍历方式,而......
  • LeetCode 236. 二叉树的最近公共祖先
    题目链接:LeetCode236.二叉树的最近公共祖先题意:给定一个二叉树,找到该树中两个指定节点的最近公共祖先。解题思路:利用二叉树的后序遍历回溯(从下往上遍历)的思想,依次遍历整个二叉树,在遍历过程中,遇到P就返回p的父节点,遇到q就返回q的父节点,(也就是找到了p,q各自的祖先)......
  • 1043_二叉树的生成和遍历(循环方式)
    1、遍历方法前序遍历(preOrder)对每个节点(子树)、贯彻这个遍历顺序:根->左->右中序遍历(inOrder)左->根->右后序遍历(postOrder)左->右->根层序遍历一层一层、从左到右遍历参考资料:二叉树各种遍历方法递归和循环实现树的层次遍历的几种方法......
  • day14
    day14模块课程目标:掌握Python中常用模块的使用方法。今日概要:自定义模块(包)第三方模块内置模块【1/2】1.自定义模块1.1模块和包importhashlibdefencrypt(data):"""数据加密"""hash_object=hashlib.md5()hash_object.update(data.encode('utf......