龙空技术网

leetcode栈之二叉树的前序遍历

码匠乱炖 55

前言:

此时朋友们对“leetcode二叉树前序遍历”大致比较讲究,你们都需要剖析一些“leetcode二叉树前序遍历”的相关资讯。那么小编在网摘上收集了一些有关“leetcode二叉树前序遍历””的相关文章,希望各位老铁们能喜欢,咱们一起来学习一下吧!

本文主要记录一下leetcode栈之二叉树的前序遍历

题目

给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3]     1    \     2    /   3 输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?来源:力扣(LeetCode)链接:著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
题解
/** * Definition for a binary tree node. * public class TreeNode { *     int val; *     TreeNode left; *     TreeNode right; *     TreeNode() {} *     TreeNode(int val) { this.val = val; } *     TreeNode(int val, TreeNode left, TreeNode right) { *         this.val = val; *         this.left = left; *         this.right = right; *     } * } */class Solution {    public List<Integer> preorderTraversal(TreeNode root) {        List<Integer> result = new ArrayList<>();        preTraverse(root, result);        return result;    }    private void preTraverse(TreeNode node, List<Integer> result) {        if (node == null) {            return ;        }        Stack<TreeNode> stack = new Stack<>();        stack.push(node);        while (!stack.empty()) {            TreeNode treeNode = stack.pop();            result.add(treeNode.val);            if (treeNode.right != null) {                stack.push(treeNode.right);            }            if (treeNode.left != null) {                stack.push(treeNode.left);            }        }    }}
小结

这里借助栈来实现二叉树的前序遍历;在每个preTraverse方法里头新建一个栈,push当前node,然后循环pop栈,将元素添加到result中,之后先push右子节点,再push左子节点。

doc二叉树的前序遍历

标签: #leetcode二叉树前序遍历