版权声明::本文为博主原创文章,欢迎转载,博客地址: https://blog.csdn.net/u012535132/article/details/84309406
用辅助栈就行存储。
import java.util.Stack;
class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
public class Main {
//先序遍历递归算法
public static void preOrder(TreeNode root) {
if(root == null)return;
System.out.print(root.val+" ");
preOrder(root.left);
preOrder(root.right);
}
//先序遍历非递归算法
public static void preOrder2(TreeNode root) {
if(root==null)return;
Stack<TreeNode> q =new Stack<TreeNode>();
q.add(root);
while(q.isEmpty()==false) {
TreeNode tn = q.pop();
System.out.print(tn.val +" ");//Visit(root)
if(tn.right!=null)q.add(tn.right);//注意是right元素先进栈
if(tn.left!=null)q.add(tn.left);
}
}
public static void main(String[] args) {
TreeNode root = new TreeNode(1);
root.left = new TreeNode(2);
root.right = new TreeNode(3);
root.left.left = new TreeNode(4);
root.left.right = new TreeNode(5);
root.right.left = new TreeNode(6);
root.right.right = new TreeNode(7);
preOrder(root);
}
}