1 package com.wwj.cn; 2 3 public interface TreeInterf { 4 void PreOrderTraverse(TreeNode treeNode);// 前序遍历 递归 5 6 void InOrderTraverse(TreeNode treeNode);// 中序遍历 递归 7 8 void PostOrderTraverse(TreeNode treeNode);// 后序遍历 递归 9 10 void LevelIterator(TreeNode treeNode);// 层序遍历 11 12 } 13 14 15 16 17 package com.wwj.cn; 18 19 import java.util.LinkedList; 20 21 public class TreeOperation implements TreeInterf { 22 23 @Override 24 public void PreOrderTraverse(TreeNode treeNode) { 25 // TODO Auto-generated method stub 26 if (treeNode == null) { 27 return; 28 } 29 System.out.println(treeNode.val); 30 PreOrderTraverse(treeNode.leftchild); 31 PreOrderTraverse(treeNode.rightchild); 32 } 33 34 @Override 35 public void InOrderTraverse(TreeNode treeNode) { 36 if (treeNode == null) { 37 return; 38 } 39 InOrderTraverse(treeNode.leftchild); 40 System.out.println(treeNode.val); 41 InOrderTraverse(treeNode.rightchild); 42 43 } 44 45 @Override 46 public void PostOrderTraverse(TreeNode treeNode) { 47 if (treeNode == null) { 48 return; 49 } 50 PostOrderTraverse(treeNode.leftchild); 51 52 PostOrderTraverse(treeNode.rightchild); 53 54 System.out.println(treeNode.val); 55 56 } 57 58 @Override 59 public void LevelIterator(TreeNode treeNode) {// 利用队列 60 if (treeNode == null) { 61 return; 62 } 63 LinkedList<TreeNode> queue = new LinkedList<>(); 64 TreeNode currentNode = null; 65 queue.offer(treeNode); 66 while (!queue.isEmpty()) { 67 currentNode = queue.poll(); 68 System.out.println(currentNode.val); 69 70 if (currentNode.leftchild != null) { 71 queue.offer(currentNode.leftchild); 72 } 73 74 if (currentNode.rightchild != null) { 75 queue.offer(currentNode.rightchild); 76 } 77 78 } 79 80 } 81 82 }