- 题目链接:94. 二叉树的中序遍历
- 考查知识:二叉树+遍历
- 题意描述:找出二叉树的中序遍历序列
- 具体代码:
- 方法一:递归
class Solution { public: void inorder(TreeNode *root,vector<int>&ans){ if(root==NULL)return; inorder(root->left,ans); ans.push_back(root->val); inorder(root->right,ans); } vector<int> inorderTraversal(TreeNode* root) { vector<int>ans;//保存前序遍历序列 inorder(root,ans); return ans; } };
- 方法二:迭代
- 递归的时候隐式地维护了一个栈,而我们在迭代的时候需要显式地将这个栈模拟出来
class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int>ans; if(root==NULL)return ans; stack<TreeNode*>s; TreeNode *p=root;//指向树根的指针 while(p!=NULL||!s.empty()){//当栈非空时 或 未遍历到NULL if(p!=NULL){//遍历左子树 s.push(p); p=p->left; }else{//到达链尾 p=s.top();s.pop();//取出分支节点遍历右子树 ans.push_back(p->val); p=p->right; } } return ans; } };
- 方法一:递归
94. 二叉树的中序遍历(二叉树+遍历)
于 2022-04-22 18:56:50 首次发布