zoukankan      html  css  js  c++  java
  • 二叉树的中序遍历

    此博客链接:https://www.cnblogs.com/ping2yingshi/p/14089282.html

    二叉树的中序遍历

    题目

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

    示例 1:


    输入:root = [1,null,2,3]
    输出:[1,3,2]
    示例 2:

    输入:root = []
    输出:[]
    示例 3:

    输入:root = [1]
    输出:[1]
    示例 4:


    输入:root = [1,2]
    输出:[2,1]
    示例 5:


    输入:root = [1,null,2]
    输出:[1,2]
     

    提示:

    树中节点数目在范围 [0, 100] 内
    -100 <= Node.val <= 100

    题解

    思路1:递归

                 递归遍历二叉树的左子树,根,右子树。

    方法1:

            1.先定义一个递归函数用来递归遍历二叉树。

            2.把根的左子树当成函数参数,先遍历左子树。

            3.函数出口为当节点为空时返回空。

            4.定义一个数组,把按顺序遍历的节点放入到数组中。

    代码

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

    结果1

     思路2:栈

    使用栈中序遍历二叉树,先把二叉树的左子树全部放入到栈中,取出左子树最下端的一个节点,加入到结果集中,然后遍历右子树。

    方法2:

              1.

    代码

    class Solution {
        public List<Integer> inorderTraversal(TreeNode root) {
            List <Integer> list=new ArrayList();
            Stack<TreeNode> stack=new Stack();
            while(root!=null||!stack.isEmpty()){
                while(root!=null){
                    stack.push(root);
                    root=root.left;
                }
                root=stack.pop();
                list.add(root.val);
                root=root.right;
            }
            return list;
        }
       
    }

    结果2

           

  • 相关阅读:
    Vim的行号、语法显示等设置,即.vimrc文件的配置
    Vim 配置详解
    经典SQL语句大全
    几种流行的AJAX框架jQuery,Mootools,Dojo,Ext JS的对比
    GHOST XP SP3无法安装IIS服务的解决方法
    开发中巧用Enum枚举类型
    代码的坏味道
    C#转义字符
    Dijit、ExtJS、jQuery UI 异同浅析
    未雨绸缪 Plan to Throw One Away
  • 原文地址:https://www.cnblogs.com/ping2yingshi/p/14089282.html
Copyright © 2011-2022 走看看