二叉树的先序遍历 递归与非递归实现
先序遍历 :
通俗来讲,就是先打印父节点,然后打印左孩子节点 ,最后打印右孩子节点
举个例子:2 3 分别是 节点1的左右孩子 4 5 分别是节点2 的左右孩子 6 7是节点3的左右孩子
1
2 3
4 5 6 7
先序的遍历的结果为 1 2 4 5 3 6 7
递归代码实现:
public static void preOrderRecur(Node head) {
  if (head == null) {
    return;
  }
  System.out.print(head.value + " ");
  preOrderRecur(head.left);
  preOrderRecur(head.right);
}
非递归代码实现:
public static void preOrderUnRecur(Node head) {
	System.out.print("pre-order: ");
	if (head != null) {
		Stack<Node> stack = new Stack<Node>();
		stack.add(head);
		while (!stack.isEmpty()) {
			head = stack.pop();
			System.out.print(head.value + " ");
			if (head.right != null) {
				stack.push(head.right);
			}
			if (head.left != null) {
				stack.push(head.left);
			}
		}
	}
	System.out.println();
}
                    
                
                
            
        
浙公网安备 33010602011771号