美文网首页
[java]二叉树的递归先序,递归中序,非递归后序遍历

[java]二叉树的递归先序,递归中序,非递归后序遍历

作者: 第六象限 | 来源:发表于2017-12-08 19:33 被阅读0次

节点类

class Node {
    public int value;
    public Node left;
    public Node right;
    public Node(int data){
        this.value=data;
    }
}

测试实例

import java.util.Stack;

//树的遍历
public class Tree {

    //递归先序遍历
    public static void preOrderRecur(Node  head){
        if(head==null){
            return;
        }
        System.out.print(head.value+"   ");
        preOrderRecur(head.left);
        preOrderRecur(head.right);
    }
    //递归中序遍历
    public static void inOrderRecur(Node  head){
        if(head==null){
            return;
        }
        inOrderRecur(head.left);
        System.out.print(head.value+"   ");
        inOrderRecur(head.right);
    }
    //非递归实现后序遍历(两个栈)
    public static void posOrderUnrecur(Node head){
        if(head!=null){
            Stack<Node> s1=new Stack<Node>();
            Stack<Node> s2=new Stack<Node>();
            s1.push(head);
            while(!s1.isEmpty()){
                head=s1.pop();
                s2.push(head);
                if(head.left!=null){
                    s1.push(head.left);
                }
                if(head.right!=null){
                    s1.push(head.right);
                }
            }
            while(!s2.isEmpty()){
                System.out.print(s2.pop().value+"   ");
            }
        }
        System.out.println();
    }

    
    public static void main(String[] args) {
        Tree tree = new Tree();
        Node node1=new Node(1);
        Node node2=new Node(2);
        Node node3=new Node(3);
        Node node4=new Node(4);
        Node node5=new Node(5);
        Node node6=new Node(6);
        Node node7=new Node(7);
        node1.left=node2;
        node1.right=node3;
        node2.left=node4;
        node2.right=node5;
        node3.left=node6;
        node3.right=node7;
        preOrderRecur(node1);
        System.out.println();
        inOrderRecur(node1);
        System.out.println();
        posOrderUnrecur(node1);
    }

}

相关文章

  • 二叉树的遍历

    非递归前序遍历 非递归中序遍历 非递归后序遍历 层序遍历

  • 树的遍历,golang实现

    先序,递归 中序,递归 后序,递归 先序,非递归 中序,非递归 后序,非递归 层序遍历

  • 二叉树遍历

    先序遍历——[递归、非递归] 中序遍历——[递归、非递归] 后序遍历——[递归、非递归] 层次遍历——[递归、非递归]

  • 二叉树的遍历算法

    递归版本 先序遍历: 中序遍历: 后序遍历: 非递归版本 先序遍历: 中序遍历: 后序遍历: 层次遍历:

  • 二叉树的遍历

    先序递归: 非递归: 中序递归: 非递归: 后序递归: 非递归 层次遍历

  • 二叉树的操作

    /*主要内容:1、实现二叉树的先序、中序、后序遍历,包括递归方式和非递归方式*/ 实现二叉树的先序、中序、后序遍历...

  • 树的遍历

    节点结构: 先序遍历 递归 非递归 后序遍历 递归 非递归 中序遍历 递归 非递归 层序遍历 类库 有了上述遍历算...

  • goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序

    goLang 二叉树遍历(递归 非递归 前序遍历 中序遍历 后序遍历 层序遍历) 前序遍历 中序遍历 后序遍历 代...

  • Java二叉树的遍历

    Java二叉树的遍历 利用递归和非递归实现二叉树的先序,中序,后序遍历以及使用队列实现二叉树的层次遍历

  • 二叉树的前中后三种遍历(递归、非递归和Morris)

    前序遍历 递归版本 非递归版本 中序遍历 递归版本 非递归版本 Morris 遍历待补充 后序遍历 递归版本 非递...

网友评论

      本文标题:[java]二叉树的递归先序,递归中序,非递归后序遍历

      本文链接:https://www.haomeiwen.com/subject/cslyixtx.html