用来输出的代码:
public void printNode(TreeNode node){
System.out.print(node.getData()+" ");
}
先序遍历:先中后左再右
public void theFirst(TreeNode root){
printNode(root);
if(root.getLeftNode()!=null){
theFirst(root.getLeftNode());
}
if(root.getRightNode()!=null){
theFirst(root.getRightNode());
}
}
中序遍历:先左再中后右
public void theMid(TreeNode root){
if(root.getLeftNode()!=null){
theMid(root.getLeftNode());
}
printNode(root);
if(root.getRightNode()!=null){
theMid(root.getRightNode());
}
}
后序遍历:先左再右后中
public void thePost(TreeNode root){
if(root.getLeftNode()!=null){
thePost(root.getLeftNode());
}
if (root.getRightNode()!=null){
thePost(root.getRightNode());
}
printNode(root);
}
层次遍历:利用队列先进先出的特性
public void theCeng(TreeNode treeNode){
if(treeNode == null){
return;
}
Queue<TreeNode> queue = new LinkedList<>();
queue.offer(treeNode);
while(!queue.isEmpty()){
TreeNode curNode = queue.poll();
if(curNode.getLeftNode()!=null){
queue.offer(curNode.getLeftNode());
}
if(curNode.getRightNode()!=null){
queue.offer(curNode.getRightNode());
}
System.out.print(curNode.getData() + " ");
}
}
注意:不要忘了引入(我之前自己尝试写队列和链表,结果撞名字了,没有报红却一直显示没有对应的方法)
import java.util.LinkedList; import java.util.List; import java.util.Queue;