我是靠谱客的博主 天真乐曲,最近开发中收集的这篇文章主要介绍递归方法遍历完全二叉树1. 前序遍历2. 中序遍历3. 后序遍历,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1. 前序遍历

描述:

打印顺序为: 根左右

思路:

考虑使用递归的方法
(1)先定义一个List类型的变量ret来保存返回值
(2)定义一个方法来进行递归操作(传入当前的根节点和res),若根为空return。
因为是根左右的方式,所以先把root的值存到res.add里,然后再递归左孩子和右孩子
(3)递归完成后返回res即可

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        preorder(root, res);
        return res;
    }
    public void preorder(TreeNode root, List<Integer> res){
        if(root == null) return;
        res.add(root.val);
        preorder(root.left, res);
        preorder(root.right, res);
    }
}

2. 中序遍历

描述:

打印顺序为:左根右

思路:

考虑使用递归的方法
(1)先定义一个List类型的变量ret来保存返回值
(2)定义一个方法来进行递归操作(传入当前的根节点和res),若根为空return。
因为是 左根右 的方式,所以先递归左孩子,再把root的值存到res.add里,最后再递归右孩子
(3)递归完成后返回res即可

class Solution {
    public List<Integer> inorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        preorder(root, res);
        return res;
    }
    public void preorder(TreeNode root, List<Integer> res){
        if(root == null) return; 
        preorder(root.left, res);
        res.add(root.val);
        preorder(root.right, res);
    }
}

3. 后序遍历

描述:
打印顺序为:左右根

思路:

考虑使用递归的方法
(1)先定义一个List类型的变量ret来保存返回值
(2)定义一个方法来进行递归操作(传入当前的根节点和res),若根为空return。
因为是 左右根 的方式,所以先递归左孩子和右孩子,再把root的值存到res.add里
(3)递归完成后返回res即可

class Solution {
    public List<Integer> postorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        postorder(root, res);
        return res;
    }
    public void postorder(TreeNode root, List<Integer> res){
        if(root == null) return;
        postorder(root.left, res);
        postorder(root.right, res);
        res.add(root.val);
    }
}

最后

以上就是天真乐曲为你收集整理的递归方法遍历完全二叉树1. 前序遍历2. 中序遍历3. 后序遍历的全部内容,希望文章能够帮你解决递归方法遍历完全二叉树1. 前序遍历2. 中序遍历3. 后序遍历所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部