前序遍历、中序遍历、后序遍历代码实现——迭代与非迭代方式
迭代方式实现
前序遍历——迭代
public static void preOrder(TreeNode node){
if(node==null) return;
System.out.println(node.getData()+" ");
preOrder(node.left);
preOrder(node.right);
}
中序遍历——迭代
public static void inOrder(TreeNode node){
if(node==null) return;
inOrder(node.left);
System.out.println(node.getData()+" ");
inOrder(node.right);
}
后序遍历——迭代
public static void postOrder(TreeNode node){
if(node==null) return;
postOrder(node.left);
postOrder(node.right);
System.out.println(node.getData()+" ");
}
树的遍历——非迭代
public void fistOrder(TreeNode node){ //前序遍历
if(node == null){
return;
}
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.push(node);
while(!stack.isEmpty()){
TreeNode n = stack.pop();//弹出根结点
System.out.println("nonRecOrder data"+n.getData());
if(n.right!=null) stack.push(n.right);
if(n.left!=null) stack.push(n.left);
}
}
另外两种方式参考前序遍历方式,只需简单修改即可。
还没有评论,来说两句吧...