当前位置:   article > 正文

【LeetCode-二叉树】二叉树前序遍历

二叉树前序遍历 leetcode

题目来源于 LeetCode 上第 144号(Binary Tree Preorder Traversal)问题:二叉树的前序遍历。题目难度为 Medium。

题目地址: https://leetcode.com/problems/binary-tree-preorder-traversal/

题目描述

Given a binary tree, return the preorder traversal of its nodes' values.

给定一个二叉树,返回其节点值的前序遍历

  1. Input: [1,null,2,3]
  2. 1
  3. \
  4. 2
  5. /
  6. 3
  7. Output: [1,2,3]
  8. 复制代码

二叉树的前序遍历过程: 根节点 -> 左子树 -> 右子树,图下图所示:

结果为: 4 2 1 3 6 5 7

题目解析:

  1. 循环检测栈是否为空,或者根节点是否为空
  2. 循环检测左节点,保存到栈中
  3. 当左节点遍历结束之后,取出栈顶的右节点,再次执行步骤2
  1. class Solution {
  2. /**
  3. * 前序遍历
  4. * @param root 根节点
  5. * @return 前序遍历的集合
  6. */
  7. public List<Integer> preorderTraversal(TreeNode root) {
  8. Stack<TreeNode> stack = new Stack();
  9. List<Integer> list = new LinkedList();
  10. /**
  11. * 步骤1
  12. * 循环检测栈是否为空,或者根节点是否为空
  13. */
  14. while(!stack.isEmpty() || root!=null){
  15. /**
  16. * 步骤2
  17. * 循环检测左节点,保存到栈中
  18. */
  19. while(root!=null){
  20. stack.push(root);
  21. list.add(root.val);
  22. root = root.left;
  23. }
  24. /**
  25. * 步骤3
  26. * 取出栈顶的右节点,再次执行步骤2
  27. */
  28. if(!stack.isEmpty()){
  29. root = stack.pop().right;
  30. }
  31. }
  32. return list;
  33. }
  34. }
  35. 复制代码
相关文章

【LeetCode-栈】有效的括号

【LeetCode-链表】面试题-反转链表

【LeetCode-二叉树】二叉树前序遍历

【LeetCode-数组】数组式整数加法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/668763
推荐阅读
相关标签
  

闽ICP备14008679号