您的位置:首页 > 其它

树的前序,中序,后序遍历的递归以及非递归实现

2017-01-10 18:27 204 查看
之前只会树的前序,中序,后序遍历的递归实现。今天主要是总结非递归实现。

       先把递归实现的前中后遍历写一遍,节点的定义就省略不写了。

       //前序遍历

       public static void preTraversal(Node root){

              if(root!=null){

                 System.out.print(root.value+" ");

                 preTraversal(root.left);

                 preTraversal(root.right);

              }

       }

     //中序遍历

     public static void inTraversal(Node root){

            if(root!=null){

             inTraversal(root.left);

             System.out.print(root.value+" ");

             inTraversal(root.right);

            }

     }

    //后序遍历

    public static void lastTraversal(Node root){

           if(root!=null){

             lastTraversal(root.left);

             lastTraversal(root.right);

             System.out.print(root.value+" ");

           }

    }

   树的递归遍历非常简单,主要介绍非递归遍历.(树的深度优先遍历分为先序,中序,后序三种)

   非递归先序遍历

  public static void iterativePreorder(Node root){

          Stack<Node> stack = new Stack<Node>();

          if(root!=null){

          stack.push(root);

          while(stack.size()!=null){

              root = stack.pop();

              System.out.print(root.value);

              if(root.right!=null){

               stack.push(root.right);

               }

              if(root.left!=null){

               stack.push(root.left);

              }

          }

          }

    }

   非递归中序遍历

   继续更新
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐