前序遍历
二叉树的前序遍历访问顺序是:根节点 -> 左子树 -> 右子树。
递归实现
public void preOrderRecursive(TreeNode root){
if(root == null) return;
System.out.println(root.val);
printPreOrder(root.left);
printPreOrder(root.right);
}
非递归实现
非递归实现利用栈来实现,主要是利用栈来存储根节点,因为之后需要访问根节点的右孩子。每次在压栈之前,先输出当前节点的值(因为当前节点就是根节点或者子树的根节点)。如果向左走已经为空了,就从栈中弹出节点,并访问弹出节点的右孩子。
public void preOrderNonRecursive(TreeNode root){
TreeNode node = root;
Stack<TreeNode> stack = new Stack<>();
while(node != null || !stack.isEmpty()){
while(node!=null){
Syste