力扣-94-二叉树的中序遍历
Posted xiazhenbin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣-94-二叉树的中序遍历相关的知识,希望对你有一定的参考价值。
题目:传送门
方法一、递归
中序遍历:先遍历左子树,在遍历根节点,最后遍历右子树。比较经典的方法是递归。
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ #include <vector> using namespace std; class Solution { public: void dfs(vector<int>& res, TreeNode* root){ if(root == NULL) return ; dfs(res, root->left); res.push_back(root->val); dfs(res, root->right); } vector<int> inorderTraversal(TreeNode* root) { vector<int> result; dfs(result, root); return result; } };
方法二、使用栈进行中序遍历
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */ /*方法二、使用栈的中序遍历*/ #include <vector> #include <stack> using namespace std; class Solution { public: vector<int> inorderTraversal(TreeNode* root) { vector<int> res; stack<TreeNode* > Stack; TreeNode* curr = root; while(curr != NULL || !Stack.empty()){ while(curr != NULL) {//找左子树,并压入堆栈 Stack.push(curr); curr = curr->left; } curr = Stack.top();//top()返回栈顶元素,但是不删除; Stack.pop();//pop()删除栈顶元素,但是不返回 res.push_back(curr->val); curr = curr->right; } return res; } };
以上是关于力扣-94-二叉树的中序遍历的主要内容,如果未能解决你的问题,请参考以下文章
二叉树有关习题整理145二叉树的后序遍历 94二叉树的中序遍历 572另一棵树的子树 236二叉树的最近公共祖先 JZ36二叉搜索树与双向链表 - 牛客