二叉树的创建和遍历

匿名 (未验证) 提交于 2019-12-02 23:56:01

二叉树创建:

  1.创建树的结点TreeNode,包含结点的编号no,结点的名字name,左子树left,右子树right,

  

二叉树遍历:

  1,先序遍历:先输出根节点,再递归左子树,然后递归右子树

  2,中序遍历:先递归左子树,然后输入根节点,再递归右子树

  3,后序遍历:先递归左子树,再递归右子树,然后输出根节点

实验:

  创建如下的二叉树并遍历

  

代码

package Tree;  public class BinaryTreeDemo {     public static void main(String[] args) {         BinaryTree binaryTree = new BinaryTree();         //创建结点         TreeNode root = new TreeNode(1,"宋江");         TreeNode treeNode2 = new TreeNode(2,"林冲");         TreeNode treeNode3 = new TreeNode(3,"吴用");         TreeNode treeNode4 = new TreeNode(4,"关胜");         TreeNode treeNode5 = new TreeNode(5,"卢俊义");         //创建树结构         root.setLeft(treeNode2);         root.setRight(treeNode3);         treeNode3.setRight(treeNode5);         treeNode3.setLeft(treeNode4);          //挂上树         binaryTree.setTree(root);          System.out.println("------------------");         System.out.println("前序遍历");         binaryTree.preOrder();         System.out.println("------------------");         System.out.println("中序遍历");         binaryTree.midOrder();         System.out.println("------------------");         System.out.println("后序遍历");         binaryTree.endOrder();       } }  //创建树 class BinaryTree{     private TreeNode root;      public void setTree(TreeNode root) {         this.root = root;     }      //前序遍历     public void preOrder(){         if (this.root != null){             this.root.preOrder();         }         else {             System.out.println("空树");         }     }     //中序遍历     public void midOrder(){         if (this.root != null){             this.root.midOrder();         }         else {             System.out.println("空树");         }     }      //后序遍历     public void endOrder(){         if (this.root != null){             this.root.endOrder();         }         else {             System.out.println("空树");         }     } }  //创建树结点 class TreeNode{     private int no;//结点编号     private String name;//结点名称     private TreeNode left;//左结点指针     private TreeNode right;//右结点指针     public TreeNode(int no, String name) {         this.no = no;         this.name = name;     }     public int getNo() {         return no;     }      public void setNo(int no) {         this.no = no;     }      public String getName() {         return name;     }      public void setName(String name) {         this.name = name;     }      public TreeNode getLeft() {         return left;     }      public void setLeft(TreeNode left) {         this.left = left;     }      public TreeNode getRight() {         return right;     }      public void setRight(TreeNode right) {         this.right = right;     }      @Override     public String toString() {         return "TreeNode{" +                 "no=" + no +                 ", name='" + name + '\'' +                 '}';     }      //前序遍历     public void preOrder(){         //输出root结点         System.out.println(this);         if (this.left != null){             this.left.preOrder();//递归左子结点         }         if (this.right != null){             this.right.preOrder();         }     }      //中序遍历     public void midOrder(){         //先遍历左子树         if (this.left != null){             this.left.midOrder();         }         //输出根结点         System.out.println(this);         if (this.right != null){             this.right.midOrder();         }     }      //后续遍历     public void endOrder(){         if (this.left != null){             this.left.endOrder();         }         if (this.right != null){             this.right.endOrder();         }         //输出根结点         System.out.println(this);     } }

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!