zoukankan      html  css  js  c++  java
  • 【Leetcode】【Medium】Binary Tree Preorder Traversal

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

    For example:
    Given binary tree {1,#,2,3},

       1
        
         2
        /
       3
    

    return [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> vals;
    14         stack<TreeNode*> nodes;
    15         TreeNode* node = root;
    16         
    17         while (node != NULL || !nodes.empty()) {
    18             while (node) {
    19                 nodes.push(node);
    20                 vals.push_back(node->val);
    21                 node = node->left;
    22             }
    23             
    24             node = nodes.top();
    25             nodes.pop();
    26             node = node->right;
    27         }
    28         
    29         return vals;
    30     }
    31 };
  • 相关阅读:
    第五天站立会议记录
    第四天站立会议
    第三天站立会议
    第二天站立会议
    冲刺会议第三天
    冲刺会议第二天
    团队建议总结
    第二次冲刺第一天
    项目总结(09)
    第七天站立会议
  • 原文地址:https://www.cnblogs.com/huxiao-tee/p/4521374.html
Copyright © 2011-2022 走看看