• 144. 二叉树的前序遍历


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

     示例:

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

    2
    /
    3

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

    solution1:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<int> preorderTraversal(TreeNode* root) {
    13         vector<int>vec;
    14         preorderTraversal(root,vec);
    15         return vec;
    16     }
    17   void preorderTraversal(TreeNode* root,vector<int>&vec)
    18   {
    19     if(root!=nullptr)
    20     {
    21       vec.push_back(root->val);
    22       preorderTraversal(root->left,vec);
    23       preorderTraversal(root->right,vec);
    24     }
    25   }
    26 };

     solution2:

     1 /**
     2  * Definition for a binary tree node.
     3  * struct TreeNode {
     4  *     int val;
     5  *     TreeNode *left;
     6  *     TreeNode *right;
     7  *     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
     8  * };
     9  */
    10 class Solution {
    11 public:
    12     vector<int> preorderTraversal(TreeNode* root) {
    13         vector<int>vec;
    14         TreeNode* p = root;
    15         stack<TreeNode*>st;
    16         while(p!=nullptr || !st.empty())
    17         {
    18           while(p!=nullptr)
    19           {
    20             st.push(p);
    21             vec.push_back(p->val);
    22             p=p->left;
    23           }
    24           if(!st.empty())
    25           {
    26             p = st.top();
    27             st.pop();
    28             p = p->right;
    29           }
    30         }
    31       return vec;
    32     }
    33 };

     思路:前序遍历一颗二叉树,即根→左→右,那么很明显会沿着根顺着左孩子而下,直到到达最底层的左孩子,那么接下来需要访问该节点的右孩子。

  • 相关阅读:
    溢出判断
    nm命令学习看不到static的函数符号表原因分析
    写作猫
    postgresql B树索引
    枚举转字符串
    17GDB使用符号表调试release程序
    WSL安装
    16GDB死锁问题定位
    Gin 通用的日志中间件
    go GCM加密解密 gin中间件加密解密,gin文件流处理
  • 原文地址:https://www.cnblogs.com/Swetchine/p/11286027.html
Copyright © 2020-2023  润新知