2023每日刷题(四十)
Leetcode—94.二叉树的中序遍历
C语言实现代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/
/*** Note: The returned array must be malloced, assume caller calls free().*/
void dfs(struct TreeNode* root, int *len, int *arr) {if(root != NULL) {dfs(root->left, len, arr);arr[*len] = root->val;(*len)++;dfs(root->right, len, arr);}
}int* inorderTraversal(struct TreeNode* root, int* returnSize) {*returnSize = 0;if(root == NULL) {return NULL;}int *array = (int *)calloc(103, sizeof(int));dfs(root, returnSize, array);return array;
}
运行结果
C++递归实现代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<int> ans;void inorder(TreeNode* root) {if(root != nullptr) {inorder(root->left);ans.push_back(root->val);inorder(root->right);}}vector<int> inorderTraversal(TreeNode* root) {inorder(root);return ans;}
};
运行结果
C++非递归实现代码
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<int> ans;void inorder(TreeNode* root) {if(root == nullptr) {return;}stack<TreeNode*> st;TreeNode* p = root;while(!st.empty() || p != nullptr) {// 扫描p的所有左下结点并进栈while(p != nullptr) {st.push(p);p = p->left;}if(!st.empty()) {p = st.top();st.pop();ans.push_back(p->val);p = p->right;}}}vector<int> inorderTraversal(TreeNode* root) {inorder(root);return ans;}
};
运行结果
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!