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;
                    
                }

  • 相关阅读:
    自动添加控件,一次提交多条记录。
    Asp.Net 2.0 的 Master Page(母版页)
    vs2008中文版提供下载(包含中文msdn),包括vs2008序列号和破解方法。
    C# 2.0 :仿MSN提示框or仿迅雷提示框(.Net2.0).rar
    httpanalyzer 结合 HttpWebRequest Post的运用
    xp访问权限问题的解决(绝对有效)
    Request.params、Request、Request.querystring、Request.Form 具体区别!
    C# List<> 泛型中遍历不同类型
    备份与恢复数据库的存储过程
    .Net 生成不重复的随机数
  • 原文地址:https://www.cnblogs.com/theonemars/p/4254329.html
Copyright © 2011-2022 走看看