二叉树的前序遍历(递归实现):
class Solution {
public:
vector<int> res;
vector<int> preorderTraversal(TreeNode* root) {
if(root!=NULL){
res.push_back(root->val);
preorderTraversal(root->left);
preorderTraversal(root->right);
}
return res;
}
};
二叉树的前序遍历(非递归实现):
借助栈来实现,压入顺序为根节点,右节点,左节点。出栈顺序对应为(根、左、右)
class Solution {
public:
vector<int> res;
vector<int> preorderTraversal(TreeNode* root) {
if(root==NULL){
return res;
}
stack<TreeNode*> tmp;
tmp.push(root);
while(!tmp.empty()){
auto x=tmp.top();
tmp.pop();
res.push_back(x->val);
if(x->right){
tmp.push(x->right);
}
if(x->left){
tmp.push

本文详细介绍了二叉树的前序、中序、后序遍历的递归与非递归实现方法。在非递归实现中,主要利用栈来辅助操作,确保正确顺序的节点访问。前序遍历压栈顺序为根、右、左,中序遍历需不断将左子节点入栈直至为空,然后出栈并检查右节点;后序遍历通过对前序遍历结果反转得到。
的递归与非递归C++实现&spm=1001.2101.3001.5002&articleId=89949278&d=1&t=3&u=72f581afa69a48b6a472a46b0f09ebb6)

被折叠的 条评论
为什么被折叠?



