zoukankan      html  css  js  c++  java
  • leetcode 94 中序遍历模板


    /*
    *递归的写法 * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ void MiddleTravel(TreeNode * root,vector<int>&result_vec) { if(root!=NULL) { MiddleTravel(root->left,result_vec); result_vec.push_back(root->val); MiddleTravel(root->right,result_vec); } } class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int>result_vec; MiddleTravel(root,result_vec); return result_vec; } };
    下面是一个不用递归的写法,用栈:
     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> inorderTraversal(TreeNode* root) {
    13         vector<int>result_vec;
    14         stack<TreeNode *>q_stack;
    15         TreeNode *NowNode=root;
    16         while(NowNode||!q_stack.empty()) {
    17             if(NowNode!=NULL) {
    18                 q_stack.push(NowNode);
    19                 NowNode=NowNode->left;
    20             }
    21             else {
    22                 NowNode=q_stack.top();
    23                 result_vec.push_back(NowNode->val);
    24                 q_stack.pop();
    25                 NowNode=NowNode->right;
    26             }
    27         }
    28         return result_vec;
    29     }
    30 };
    
    
    
     
  • 相关阅读:
    区块链开发之Corda训练营笔记12:Flow习题答案
    区块链开发之Corda训练营笔记11:Flow代码演示
    gitolite的部署
    python操作redis
    python多进程
    mysql索引
    mysql事务
    mysql外键
    mysql联合查询
    python常用模块之re模块(正则)
  • 原文地址:https://www.cnblogs.com/thefirstfeeling/p/5733576.html
Copyright © 2011-2022 走看看