先序遍历-递归和非递归(java版)

版权声明::本文为博主原创文章,欢迎转载,博客地址: 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);
	}
}

猜你喜欢

转载自blog.csdn.net/u012535132/article/details/84309406