zoukankan      html  css  js  c++  java
  • 144. Binary Tree Preorder Traversal

    题目:

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

    思路:

    二叉树的前序遍历一般分为递归和非递归两种,非递归通过栈来存储节点。

    代码:

    递归:

     1 class Solution {
     2 public:
     3     vector<int> preorderTraversal(TreeNode* root) {
     4         vector<int> result;
     5         preorder(result, root);
     6         return result;
     7     }
     8 
     9     void preorder(vector<int>& result, TreeNode *root) {
    10         if (root == NULL)
    11             return;
    12         result.push_back(root->val);
    13         if (root->left != NULL)
    14             preorder(result, root->left);
    15         if (root->right != NULL)
    16             preorder(result, root->right);
    17     }
    18 };

    循环:

     1 class Solution {
     2 public:
     3     vector<int> preorderTraversal(TreeNode* root) {
     4         vector<int> result;
     5         if (root == NULL)
     6             return result;
     7 
     8         stack<TreeNode*> s;
     9         s.push(root);
    10 
    11         while (!s.empty()) {
    12             TreeNode *temp = s.top();
    13             s.pop();
    14             result.push_back(temp->val);
    15             if (temp->right != NULL)
    16                 s.push(temp->right);
    17             if (temp->left != NULL)
    18                 s.push(temp->left);
    19 
    20         }
    21         return result;
    22     }
    23 
    24 };
  • 相关阅读:
    notebook笔记
    from __future__ import absolute_import
    GUI
    version_info
    函数参数
    None
    exec、eval
    os
    IGeometry接口
    IGeometry接口
  • 原文地址:https://www.cnblogs.com/sindy/p/8284835.html
Copyright © 2011-2022 走看看