网页设计网站开发需要哪些知识,自媒体平台有哪些赚钱,如何做网站广告图片,网站建设维护与管理实训总结代码随想录二刷 #xff5c;二叉树 #xff5c;二叉树的中序遍历 题目描述解题思路代码实现迭代法递归法 题目描述
94.二叉树的中序遍历
给定一个二叉树的根节点 root #xff0c;返回 它的 中序 遍历 。
示例 1#xff1a; 输入#xff1a;root [1,null,2,3] 输出二叉树 二叉树的中序遍历 题目描述解题思路代码实现迭代法递归法 题目描述
94.二叉树的中序遍历
给定一个二叉树的根节点 root 返回 它的 中序 遍历 。
示例 1 输入root [1,null,2,3] 输出[1,3,2]
示例 2
输入root [] 输出[]
示例 3
输入root [1] 输出[1]
提示
树中节点数目在范围 [0, 100] 内-100 Node.val 100
解题思路
在处理的节点放入栈之后紧接着放入一个空指针作为标记
代码实现
迭代法
class Solution {
public:void traversal(TreeNode* cur, vectorint vec) {if (cur NULL) return;traversal(cur-left, vec);vec.push_back(cur-val);traversal(cur-right, vec);}vectorint inorderTraversal(TreeNode* root) {vectorint result;traversal(root, result);return result;}
};递归法
// 中序遍历左中右
// 入栈顺序右中左
class Solution {
public:vectorint inorderTraversal(TreeNode* root) {vectorint result;stackTreeNode* st;if (root ! NULL) st.push(root);while (!st.empty()) {TreeNode* node st.top();if (node ! NULL) {st.pop();if (node-right) st.push(node-right);st.push(node);st.push(NULL);if (node-left) st.push(node-left);} else {st.pop();node st.top();st.pop();result.push_back(node-val);}}return result;}
};