栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

94. 二叉树的中序遍历(java)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

94. 二叉树的中序遍历(java)

题目描述

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

  1. 首先是递归方法。

访问顺序:先左子树,再根节点,最后右子树;
原理:要先观察最后一个,从后往前进行分析。

随后进入D的右节点,运行inorder(res,root.right);D的右节点为空,函数返回。
到这里当然没结束,会依次返回到B点E点,回到A点。
此时,A的左侧节点已经加入完了,接下来是A的右侧节点。

代码如下

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

迭代
原理:先设置一个总循环确保所有的节点都入栈,再设置一个循环确保每次都能把左节点先入栈。随后把这个左节点出栈来表示这个节点已经中序排序结束,一级一级出栈,然后才轮到右侧节点。
代码

class Solution {
    public List inorderTraversal(TreeNode root) {
        List res = new ArrayList();
        
        Stack sta = new Stack();
        
        while(root!=null || !sta.isEmpty()){    
            while(root!=null){
            sta.add(root);    

            root = root.left;
        }
            root = sta.pop();
            
            res.add(root.val);
            
            root = root.right;
        }
        return res;
        
    
}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/462439.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号