前言:
此时朋友们对“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二叉树前序遍历