首页 > 代码库 > java实现二叉树的相关操作
java实现二叉树的相关操作
import java.util.ArrayDeque;import java.util.Queue;public class CreateTree {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubNode root=new Node();root.data=9;Node temp01=new Node();temp01.data=1;root.left=temp01;Node temp02=new Node();temp02.data=3;root.right=temp02;Node temp03=new Node();temp03.data=2;root.left.left=temp03;Node temp04=new Node();temp04.data=4;root.left.right=temp04;Node temp05=new Node();temp05.data=8;root.right.left=temp05;Node temp06=new Node();temp06.data=6;root.left.left.left=temp06;Node temp07=new Node();temp07.data=7;root.left.left.right=temp07;System.out.println("--------先序遍历----------");SelectTree1(root);System.out.println();System.out.println("---------中序遍历---------");SelectTree(root);System.out.println();System.out.println("---------后序遍历---------");SelectTree2(root);System.out.println();System.out.println("----------叶节点个数-----------");int i=leafNum(root);System.out.println(i);System.out.println("----------层次遍历二叉树-----------------");levelOrder(root);System.out.println();int j=deep(root);System.out.println("---------高度---------");System.out.println(j);}// 中序遍历public static void SelectTree(Node root){if(root==null)return;SelectTree(root.left);System.out.print(root.data+" ");SelectTree(root.right);}// 先序遍历public static void SelectTree1(Node root){if(root==null)return;System.out.print(root.data+" ");SelectTree1(root.left);SelectTree1(root.right);}// 后序遍历public static void SelectTree2(Node root){if(root==null)return;SelectTree2(root.left);SelectTree2(root.right);System.out.print(root.data+" ");}// 叶子数public static int leafNum(Node node) { if (node != null) { if (node.left == null && node.right == null) { return 1; } return leafNum(node.left)+leafNum(node.right); } return 0; } //求二叉树的深度 public static int deep(Node node){ int h1, h2; if(node == null) {return 0; } else{ h1= deep(node.left); h2= deep(node.right); return (h1<h2)?h2+1:h1+1; } } // 层次遍历 public static void levelOrder(Node node) { if (node == null) return; Queue<Node> queue = new ArrayDeque<Node>(); queue.add(node); while (!queue.isEmpty()) { Node temp = queue.poll(); System.out.print(temp.data); if (temp.left != null) queue.add(temp.left); if (temp.right != null) queue.add(temp.right); } } }class Node{boolean visited=false;int data=http://www.mamicode.com/0;Node left=null;Node right=null;}
java实现二叉树的相关操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。