温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java怎么实现的二叉树常用操作

发布时间:2021-04-17 14:20:01 来源:亿速云 阅读:176 作者:小新 栏目:编程语言

小编给大家分享一下Java怎么实现的二叉树常用操作,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

具体如下:

import java.util.ArrayDeque; import java.util.Queue; import java.util.Stack; //二叉树的建树,前中后 递归非递归遍历 层序遍历 //Node节点 class Node {     int element;     Node left;     Node right;     public Node() {     }     public Node(int element) {         this.element = element;     } } // BinaryTree public class Tree {     // creat tree from array     public static Node creatTree(int[] data, int i) {         if (i >= data.length || data[i] == -1)             return null;         Node temp = new Node(data[i]);         temp.left = creatTree(data, i * 2 + 1);         temp.right = creatTree(data, i * 2 + 2);         return temp;     }     // pre前序遍历递归     public static void pre(Node temp) {         if (temp == null)             return;         System.out.print(temp.element + " ");         pre(temp.left);         pre(temp.right);     }     // mid中序遍历递归     public static void mid(Node temp) {         if (temp == null)             return;         mid(temp.left);         System.out.print(temp.element + " ");         mid(temp.right);     }     // last后序遍历递归     public static void last(Node temp) {         if (temp == null)             return;         last(temp.left);         last(temp.right);         System.out.print(temp.element + " ");     }     // pre1前序遍历非递归     public static void pre1(Node temp) {         Stack<Node> stack = new Stack<>();         while (temp != null || !stack.isEmpty()) {             while (temp != null) {                 stack.push(temp);                 System.out.print(temp.element + " ");                 temp = temp.left;             }             if (!stack.isEmpty()) {                 temp = stack.pop().right;             }         }     }     // mid1中序遍历非递归     public static void mid1(Node temp) {         Stack<Node> stack = new Stack<>();         while (temp != null || !stack.isEmpty()) {             while (temp != null) {                 stack.push(temp);                 temp = temp.left;             }             if (!stack.isEmpty()) {                 temp = stack.pop();                 System.out.print(temp.element + " ");                 temp = temp.right;             }         }     }     // last1后序遍历非递归     public static void last1(Node temp) {         Stack<Node> stack = new Stack<>();         Stack<Node> stack2 = new Stack<>();         while (temp != null || !stack.isEmpty()) {             while (temp != null) {                 stack.push(temp);                 stack2.push(temp);                 temp = temp.right;             }             if (!stack.isEmpty()) {                 temp = stack.pop().left;             }         }         while (!stack2.isEmpty())             System.out.print(stack2.pop().element + " ");     }     // ceng层序遍历     public static void ceng(Node temp) {         if (temp == null)             return;         Queue<Node> queue = new ArrayDeque<>();         queue.offer(temp);         while (!queue.isEmpty()) {             temp = queue.poll();             System.out.print(temp.element + " ");             if (temp.left != null)                 queue.offer(temp.left);             if (temp.right != null)                 queue.offer(temp.right);         }     }     // Demo     public static void main(String[] args) {         int[] array = { 1, 2, 3, 4, 5, 6, 7, -1, -1, 10, -1, -1, 13 };         Node tree = creatTree(array, 0);         System.out.println("亿速云测试结果:");         pre(tree);         System.out.println();         pre1(tree);         System.out.println();         mid(tree);         System.out.println();         mid1(tree);         System.out.println();         last(tree);         System.out.println();         last1(tree);         System.out.println();         ceng(tree);     } }

运行结果:

Java怎么实现的二叉树常用操作

看完了这篇文章,相信你对“Java怎么实现的二叉树常用操作”有了一定的了解,如果想了解更多相关知识,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI