leetcode144 二叉树的前序遍历

落日映苍穹つ 2023-06-18 03:53 26阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9mYW50aWFuenVvLmJsb2cuY3Nkbi5uZXQ_size_16_color_FFFFFF_t_70

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

示例:

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

输出: [1,2,3]
进阶: 递归算法很简单,你可以通过迭代算法完成吗?

思路:模仿递归的思路压栈即可。

  1. /**
  2. * Definition for a binary tree node.
  3. * public class TreeNode {
  4. * int val;
  5. * TreeNode left;
  6. * TreeNode right;
  7. * TreeNode(int x) { val = x; }
  8. * }
  9. */
  10. class Solution {
  11. public List<Integer> preorderTraversal(TreeNode root) {
  12. List<Integer> res = new ArrayList<Integer>();
  13. if (root == null) {
  14. return res;
  15. }
  16. Stack<TreeNode> stack = new Stack<TreeNode>();
  17. stack.push(root);
  18. while (!stack.isEmpty()) {
  19. TreeNode node = stack.pop();
  20. res.add(Integer.valueOf(node.val));
  21. if (node.right != null) {
  22. stack.push(node.right);
  23. }
  24. if (node.left != null) {
  25. stack.push(node.left);
  26. }
  27. }
  28. return res;
  29. }
  30. }

发表评论

表情:
评论列表 (有 0 条评论,26人围观)

还没有评论,来说两句吧...

相关阅读