美文网首页
栈-N144-二叉树的前序遍历

栈-N144-二叉树的前序遍历

作者: 三次元蚂蚁 | 来源:发表于2019-03-30 12:28 被阅读0次

题目

思路

  • 前序遍历的顺序是根->左子树->右子树
  • 由于访问完左子树后要访问右子树,所以要先把右子树的信息暂存,所以考虑用栈实现
  • 根节点入栈
  • 重复将栈顶元素出栈直至栈为空
  1. 栈顶元素有右孩子,将右孩子入栈
  2. 栈顶元素有左孩子,将左孩子入栈

代码

class Solution {
    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> result = new LinkedList<>();
        if (root == null) {
            return result;
        }
        LinkedList<TreeNode> stack = new LinkedList<>();
        TreeNode top;
        stack.push(root);
        while (!stack.isEmpty()) {
            top = stack.pop();
            result.add(top.val);
            if (top.right != null) {
                stack.push(top.right);
            }
            if (top.left != null) {
                stack.push(top.left);
            }
        }
        return result;
    }
}

相关文章

  • 二叉树的前序、中序、后序遍历迭代实现

    二叉树的前序、中序、后序遍历迭代实现 二叉树的前序遍历,迭代实现 根-左-右 思路:1、 借用栈的结构2、 先...

  • 栈-N144-二叉树的前序遍历

    题目 概述:给定一个二叉树,返回它的前序遍历要求:使用非递归算法 输入:二叉树的根节点 输出:前序遍历值列表 出处...

  • 二叉树的遍历

    二叉树的遍历 二叉树遍历 分为前序遍历、中序遍历和后序遍历。 前序遍历 (DLR) 先访问根节点,然后前序遍历左子...

  • 数据结构:树的实现和遍历(c++)

    (一)二叉树的遍历——递归实现 二叉树常见的遍历方式分为前序遍历、中序遍历和后序遍历。 1 前序遍历 前序遍历也叫...

  • leecode刷题(28)-- 二叉树的前序遍历

    leecode刷题(28)-- 二叉树的前序遍历 二叉树的前序遍历 给定一个二叉树,返回它的 前序 遍历。 示例:...

  • 二叉树算法总结

    迭代 前序遍历 根据栈的属性对二叉树进行遍历,注意先右节点入栈,随后左节点入栈1.根节点入栈2.当栈不为空时,栈顶...

  • 面试题----树

    94. 二叉树的非递归前序遍历 直接进出入栈,拿出数据: 94. 二叉树的非递归中序遍历 首先是根非空入栈,对子树...

  • 二叉树递归非递归遍历算法整理

    一、二叉树前序遍历 1 前序递归遍历 2.前序非递归遍历 一、二叉树中序遍历 2.中序递归遍历 1.中序非递归遍历...

  • 二叉树遍历

    二叉树的遍历 1. 前序遍历 1.1 递归前序遍历 1.2 非递归前序遍历 2 中序遍历 2.1递归遍历 2.2非...

  • 二叉树递归与非递归 - 代码实现

    前序遍历,中序遍历,后序遍历,层次遍历,深度遍历 参考深度遍历 本质上就是 前序遍历 C++ 实现 二叉树前序、中...

网友评论

      本文标题:栈-N144-二叉树的前序遍历

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