zoukankan      html  css  js  c++  java
  • 二叉树的5种遍历方式

    参考链接:https://blog.csdn.net/u010842515/article/details/68951783

    一:前序遍历

    递归解法:

        public void preOrderTraverse(Node node){
            if(node == null) return ;
            System.out.println(node.data);
            preOrderTraverse(node.left);
            preOrderTraverse(node.right);
        }

    非递归解法:

     //非递归解法
        public void preOrder(Node node){
            Stack<Node> stack = new Stack<Node>();if(node == null) return;
            stack.push(node);
            while(!stack.empty()){
                Node n = stack.pop();
                System.out.println(n.data);
                if(n.right!=null) stack.push(n.right);
                if(n.left!=null) stack.push(n.left);
            }
            listTraverse(list);
            // return list;
        }
        
        }

    二:中序遍历

    递归解法:

    public void inOrderTraverse(Node node){
            if(node == null) return;
            inOrderTraverse(node.left);
            System.out.println(node.data);
            inOrderTraverse(node.right);
        }

    非递归解法:

        //非递归
        public void inOrder(Node node){
            Stack<Node> stack = new Stack<Node>();
            while(node!= null || !stack.empty()){
                while(node != null){
                    stack.push(node);
                    node = node.left;
                    
                }
                if(!stack.empty()){
                     node = stack.pop();
                    System.out.println(node.data);
                    node = node.right;
                }
            }
        }
     

    三:后序遍历

    public void postOrderTraverse(Node node){
            if(node == null) return;
            postOrderTraverse(node.left);
            postOrderTraverse(node.right);
            System.out.println(node.data);
        }

    四:深度优先遍历

    就是前序遍历

    五:广度优先遍历

     //层次遍历
        public void cengOrder(Node node){
            if(node == null) return;
            Queue<Node> queue = new LinkedList<Node>();
            queue.add(node);
            while(!queue.isEmpty()){
                
                    Node temp = queue.poll();
                    System.out.println(temp.data);
                    if(temp.left!=null) queue.add(temp.left);
                    if(temp.right!=null) queue.add(temp.right);
                
            }
        }
  • 相关阅读:
    Android获取两条线之间的夹角度数
    Android字体度量(FontMetrics)
    Android下如何计算要显示的字符串所占的宽度和高度
    Android 颜色渲染PorterDuff及Xfermode详解
    从输入URL到页面加载的全过程
    滚动优化
    常用的前端相关chrome插件
    DNS预解析prefetch
    资源预加载preload和资源预读取prefetch简明学习
    使用chrome开发者工具中的performance面板解决性能瓶颈
  • 原文地址:https://www.cnblogs.com/yingpu/p/9271491.html
Copyright © 2011-2022 走看看