二叉树的前序遍历
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
public class BinaryTreePreorderTraversal {
public List<Integer> preorderTraversal(TreeNode root) {
List<Integer> list = new ArrayList<Integer>();
method(root, list);
return list;
}
/**
* 递归实现
*
* @param root
* @param list
*/
private void method(TreeNode root, List<Integer> list) {
if (root == null) {
return;
}
method(root.left, list);
method(root.right, list);
}
/**
* 迭代实现
* @param root
* @param list
*/
private void method1(TreeNode root, List<Integer> list) {
Stack<TreeNode> stack = new Stack<TreeNode>();
stack.add(root);
while (!stack.isEmpty()) {
TreeNode head = stack.pop();
list.add(head.val);
if (head.right != null) {
stack.add(head.right);
}
if (head.left != null) {
stack.add(head.left);
}
}
}
}
评论区