赞
踩
public class Node { int no; String data; Node left;//左节点 Node right;//右节点 //提供一个构造方法,创建节点 public Node(int no, String data) { this.no = no; this.data = data; } @Override public String toString() { return "Node{" + "no=" + no + ", data='" + data + '\'' + '}'; } }
//前序遍历,传入根节点 public void preOrder(Node node) { //如果传入根节点为null则该二叉树不存在 if (node == null) { System.out.println("二叉树不存在"); return; } //先打印父节点 System.out.println(node); //再打印左子树,递归 if (node.left != null) { preOrder(node.left); } //再打印右子树,递归 if (node.right != null) { preOrder(node.right); } }
//中序遍历,传入根节点 public void infixOrder(Node node) { //如果传入根节点为null则该二叉树不存在 if (node == null) { System.out.println("二叉树不存在"); return; } //先打印左子树,递归 if (node.left != null) { infixOrder(node.left); } //再打印父节点 System.out.println(node); //再打印右子树,递归 if (node.right != null) { infixOrder(node.right); } }
//后序遍历,传入根节点 public void postOrder(Node node) { //如果传入根节点为null则该二叉树不存在 if (node == null) { System.out.println("二叉树不存在"); return; } //先打印左子树,递归 if (node.left != null) { postOrder(node.left); } //再打印右子树,递归 if (node.right != null) { postOrder(node.right); } //再打印父节点 System.out.println(node); }
public void deleteNode(Node root, int no) { //空树情况 if (root == null) { System.out.println("空树"); return; } //删除的是根节点 if (root.no == no) { System.out.println("删除失败!根节点不能删除"); return; } //判断左孩子 if (root.left != null && root.left.no == no) { root.left = null; return; } //判断右孩子 if (root.right != null && root.right.no == no) { root.right = null; return; } //递归向左 if (root.left != null) { deleteNode(root.left, no); } //递归向右 if (root.right != null) { deleteNode(root.right, no); } }
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, "giao"); //简单的构建一个二叉树 node1.left = node2; node2.left = node4; node2.right = node5; node1.right = node3; node3.left = node6; node3.right = node7; BinaryTree binaryTree = new BinaryTree(); System.out.println("前序遍历"); binaryTree.preOrder(node1);//1245367 System.out.println("中序遍历"); binaryTree.infixOrder(node1);//4251637 System.out.println("后续遍历"); binaryTree.postOrder(node1);//4526731 binaryTree.deleteNode(node1, 3); System.out.println("删除后的前序遍历"); binaryTree.preOrder(node1);//1245
结果:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。