zoukankan      html  css  js  c++  java
  • Binary Tree Inorder Traversa

    package cn.edu.xidian.sselab.hashtable;

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

    /**
     *
     * @author zhiyong wang
     * title: Binary Tree Inorder Traversal
     * content:
     * Given a binary tree, return the inorder(中序) traversal of its nodes' values.
     *
     * For example:
     * Given binary tree {1,#,2,3},
     *
     *    1
     *    
     *      2
     *     /
     *    3
     *
     * return [1,3,2]
     *
     */
    public class BinaryTreeInorderTraversal {

        //with stack to solve this question
        public List<Integer> inorderTraversal(TreeNode root){
            TreeNode node = root;
            Stack<TreeNode> stack = new Stack<TreeNode>();
            List<Integer> list = new ArrayList<Integer>();
            while(node != null || !stack.isEmpty()){
                while(node != null){
                    stack.push(node);
                    node = node.left;
                }
                if(!stack.isEmpty()){
                    node = stack.pop();
                    list.add(node.val);
                    node = node.right;
                }
            }
            return list;
        }
        
        //with recursive to solve this question
        //这个地方注意三个地方:(1)if(node == null)的时候,返回的是list,而不是null
        //                   (2) 题目中定义的是left与right,而不是leftNode,rightNode
        //                    (3)递归返回的结果要加到list中,所以用list.addAll();
        public List<Integer> inorderTraversals(TreeNode root){
            TreeNode node = root;
            List<Integer> list = new ArrayList<Integer>();
            if(node == null) return list;
            list.addAll(inorderTraversals(node.left));
            list.add(node.val);
            list.addAll(inorderTraversals(node.right)) ;
            return list;
        }
        
    }

    class TreeNode{
        int val;
        TreeNode left;
        TreeNode right;
        TreeNode(int val){
            this.val = val;
        }
    }
  • 相关阅读:
    CentOS 6.7 如何启用中文输入法
    10w数组去重,排序,找最多出现次数(精华)
    win10虚拟机搭建Hadoop集群(已完结)
    Linux常用命令
    调用接口显示Required request body is missing
    Git 的使用
    Navicat创建事件,定时更新数据库
    mysql生成UUID
    时间戳与字符串相互转换
    牛客中的错题
  • 原文地址:https://www.cnblogs.com/wzyxidian/p/5172283.html
Copyright © 2011-2022 走看看