• leetcode-Binary Tree Inorder Traversal


    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].

    树的中序遍历

    package leetcode;

    import java.util.*;
    //方法一 数据结构:树的中序遍历:1、递归 2、非递归
    //始终操作的是根节点 ->( root=root.left),把右边节点移到根节点上进行;
    public class BinaryTreeInorderTraversal {
        private class TreeNode {
            int val;
            TreeNode left;
            TreeNode right;
            TreeNode(int x) {
                val = x;
            }
        }
        /*public List<Integer> inorderTraversal(TreeNode root) {
            List<Integer> list = new ArrayList<>();
            addNode(list,root);
            return list;
        }
        public void addNode(List<Integer> list,TreeNode root){                //参数只能传入List类型,不能传ArrayList类型
            if(root == null)  return;    //什么都不返回
            addNode(list,root.left);
            list.add(root.val);
            addNode(list,root.right);           
        }*/
        //方法二 :思想:1、先找到叶子结点,然后把每个点当作根节点分析,然后逐层出栈(入栈:顶向下;出栈:下向上!)
        //非递归方法:1、list用来存储结果;2stack : 用来操作这个树,
         public List<Integer> inorderTraversal(TreeNode root) {
              List<Integer> list =new ArrayList();
                Stack<TreeNode> stack=new Stack();
                if(root==null) return list;
                while(root!=null){
                    stack.push(root);
                    root=root.left;     //先把左边的数都存到栈里,
                    while(root==null){  //当左子节点为空时(此时其仍为子根节点),
                                        //再往下没有节点,就存入,然后判断有没有右子节点,若有,就以右子节点为根继续遍历
                                        //若没有则,出栈,将元素存入list
                                   
                        if(stack.empty()) return list;
                        root=stack.pop();
                        list.add(root.val);
                        root=root.right;
                    }
                }
                return list;
                
                
            }
        
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub

        }

    }

    态度决定行为,行为决定习惯,习惯决定性格,性格决定命运
  • 相关阅读:
    元素查找
    合并果子 2004年NOIP全国联赛普及组
    队列练习1,2,3
    山峰
    栈练习1,2,3
    天使之城
    括号序列
    布尔表达式
    逆波兰表达式
    旅行家的预算 1999年NOIP全国联赛普及组NOIP全国联赛提高组
  • 原文地址:https://www.cnblogs.com/neversayno/p/5407727.html
Copyright © 2020-2023  润新知