美文网首页
144. 二叉树的前序遍历

144. 二叉树的前序遍历

作者: 伶俐ll | 来源:发表于2020-10-15 22:49 被阅读0次

144. 二叉树的前序遍历

给定一个二叉树,返回它的 前序 遍历。

示例:

输入: [1,null,2,3]

1
 \
  2
 /
3 

输出: [1,2,3]

代码实现

  • 迭代
if (root == null) return new LinkedList<>();
        Stack<TreeNode> stack = new Stack<>();
        LinkedList<Integer> linkedList = new LinkedList<>();
        stack.push(root);
        while (!stack.isEmpty()){
            TreeNode node = stack.pop();
            linkedList.add(node.val);
            if(node.right != null){
                stack.push(node.right);
            }
            if (node.left != null){
                stack.push(node.left);
            }
        }
        return linkedList;
  • 递归
private List<Integer> list = new ArrayList<>();
public List<Integer> preorderTraversal(TreeNode root) {
        if (root == null )  return new ArrayList<>();
        list.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return list;
    }

解题思路

1. 迭代实现

利用栈来实现

  1. 将root入栈
  2. 循环执行以下操作直到栈为空
    2.1. 弹出栈顶节点,进行访问
    2.2. 将右子节点入栈
    2.3. 将左子节点入栈
2. 递归实现
  1. 访问根节点
  2. 前序遍历左子树
  3. 前序遍历右子树

相关文章

网友评论

      本文标题:144. 二叉树的前序遍历

      本文链接:https://www.haomeiwen.com/subject/tvnzektx.html