zoukankan      html  css  js  c++  java
  • 41: Binary Tree Inorder Traversal

     /************************************************************************/
                /*       41:  Binary Tree Inorder Traversal                               */
                /************************************************************************/
                /*
                 *  /*
                 * 应用1:
                 * 当二叉树已经是一棵 二查搜索树时,中序遍历后的结果就是升序排列的
                 * */
                 
                /****中序遍历 InOrder tree******************************************/

       public List<Integer> inorderTraversal(TreeNode root)
                {
                    List<Integer> source=new ArrayList<Integer>();
                    inorderTree(root,source);
                    return source;
                }
                
                private void inorderTree(TreeNode node,List<Integer> nodes)
                {
                        if(node==null)
                        {
                            return;
                        }
                        //System.out.println("pre root-->"+node.val);
                        inorderTree(node.left,nodes);
                        System.out.println("-->"+node.val);
                        nodes.add(node.val);
                        inorderTree(node.right,nodes);
                        
                }
                
                /****中序遍历 InOrder tree Time: O(n), Space: O(n)栈迭代方法实现的**********/
                public List<Integer> inorderTraversal2(TreeNode root)
                {
                    List<Integer> results=new ArrayList<Integer>();
                    Stack<TreeNode> stack=new Stack<TreeNode>();
                    TreeNode node=null;
                    node=root;
                    while(node!=null||!stack.isEmpty())
                    {
                        if(node!=null)
                        {
                            stack.push(node);
                            node=node.left;
                        }
                        else
                        {
                            node= stack.pop();
                            if(node!=null)
                            {
                                results.add(node.val);
                                //System.out.println("-->"+node.val);
                            }
                            node=node.right;
                        }
                    }
                    return results;
                    
                }

  • 相关阅读:
    关于MD5的个人笔记
    QueryString 页面传值方法
    酒店管理系统房态图的效果制作
    开始我的学习之路
    SQL取数据库名,取表名,取列名
    鼠标/键盘事件
    C#皮肤使用例子.
    C#调用WIN API
    C#中定时器的使用方法
    C#随机点名程序例子(名字由配置文件提供)
  • 原文地址:https://www.cnblogs.com/theonemars/p/4254329.html
Copyright © 2011-2022 走看看