递归二叉树的序列打印

xiaoxiao2021-02-28  90

请用递归方式实现二叉树的先序、中序和后序的遍历打印。

给定一个二叉树的根结点root,请依次返回二叉树的先序,中序和后续遍历(二维数组的形式)。

/* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };*/ class TreeToSequence { public: vector<vector<int> > convert(TreeNode* root) { vector<int> temp; vector<vector<int>> res; preorder(root,temp); res.push_back(temp); temp.clear(); midorder(root,temp); res.push_back(temp); temp.clear(); postorder(root,temp); res.push_back(temp); temp.clear(); return res; } // 先序遍历 void preorder(TreeNode *root,vector<int> &temp){ if(root==NULL) return ; temp.push_back(root->val); preorder(root->left,temp); preorder(root->right,temp); } // 中序遍历 void midorder(TreeNode *root,vector<int> &temp){ if(root==NULL) return ; midorder(root->left,temp); temp.push_back(root->val); midorder(root->right,temp); } // 后序遍历 void postorder(TreeNode *root,vector<int> &temp){ if(root==NULL) return ; postorder(root->left,temp); postorder(root->right,temp); temp.push_back(root->val); } };

转载请注明原文地址: https://www.6miu.com/read-41918.html

最新回复(0)