package com.camnter.basicexercises.tree;
import com.camnter.basicexercises.core.TreeNode;
import java.util.Stack;
/**
* 前序遍历
*
* 根左右
*
*
* - 1
* - 2 3
* - 4 5 6
* - 7 8
*
* 1 2 4 5 7 8 3 6
*
*
* @author CaMnter
*/
public class PreOrder {
void preOrderRecursive(TreeNode root) {
if (root == null) return;
System.out.print(root.value + " ");
preOrderRecursive(root.left);
preOrderRecursive(root.right);
}
void preOrder(TreeNode root) {
if (root == null) return;
Stack> stack = new Stack>();
TreeNode t;
stack.push(root);
while (!stack.isEmpty()) {
// 根
t = stack.pop();
System.out.print(t.value + " ");
// 后进先出,先放右,后放左边
// 出栈就是 先左后右,完成 根左右
if (t.right != null) stack.push(t.right);
if (t.left != null) stack.push(t.left);
}
}
public static void main(String args[]) {
PreOrder preOrder = new PreOrder();
preOrder.preOrder(TreeNode.getTree());
}
}