zoukankan      html  css  js  c++  java
  • LeetCode 144. 二叉树的前序遍历(Binary Tree Preorder Traversal)

    题目描述

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

     示例:

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

    进阶: 递归算法很简单,你可以通过迭代算法完成吗?

    解题思路

    由于前序遍历的顺序是父节点->左孩子->右孩子,所以在遍历到某节点时,先输出该节点值,然后把该节点的右孩子入栈,接着访问左孩子,若左孩子为空,则访问栈顶结点。

    代码

     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> res;
    14         stack<TreeNode*> s;
    15         TreeNode* node = root;
    16         while(node || s.size()){
    17             if(node == NULL){
    18                 node = s.top();
    19                 s.pop();
    20             }
    21             res.push_back(node->val);
    22             if(node->right)
    23                 s.push(node->right);
    24             node = node->left;
    25         }
    26         return res;
    27     }
    28 };
  • 相关阅读:
    5-1 CSS命名规范
    npm
    Maven的安装与配置
    Emmet
    计算机常识——IP/TCP协议
    判别分析——距离判别
    R语言创建空向量、矩阵
    Rstudio——基本功能及操作
    R语言——source函数
    R语言关于warning问题——关于options函数
  • 原文地址:https://www.cnblogs.com/wmx24/p/9493985.html
Copyright © 2011-2022 走看看