概述
四种遍历方式分别为:先序遍历、中序遍历、后序遍历、层序遍历。
节点定义信息:
public class TreeNode {
public String data;
public TreeNode leftChild;
public TreeNode rightChild;
public TreeNode(int data){
this.data = data;
}
}
树信息:
先序遍历
先看伪逻辑
traveral(TreeNode node){
print(node.data);
traveral(node.leftChild);
traveral(node.rightChild);
}
对应结果:ABDFECGHI
中序遍历
traveral(TreeNode node){
traveral(node.leftChild);
print(node.data);
traveral(node.rightChild);
}
对应结果:DBEFAGHCI
后续遍历
traveral(TreeNode node){
traveral(node.leftChild);
traveral(node.rightChild);
print(node.data);
}
对应结果:DEFBHGICA
层序遍历
先看大神的算法
public static void levelOrder(TreeNode root){
LinkedList<TreeNode> queue = new LinkedList<>();
queue.add(root);
while(!queue.isEmpty()){
root = queue.pop();
System.out.print(root.data+" ");
if(root.leftChild!=null) queue.add(root.leftChild);
if(root.rightChild!=null) queue.add(root.rightChild);
}
}
对应结果:ABCDFGIEH