leetcode 94 中序遍历模板

本文介绍了一种实现二叉树中序遍历的方法,包括递归和非递归两种方式。递归方法简洁直观,而非递归方法通过使用栈来替代递归调用,适合需要避免深度递归的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


/*
*递归的写法 * 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 };

 

 

 

转载于:https://www.cnblogs.com/thefirstfeeling/p/5733576.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值