LeetCode 94. 二叉树的中序遍历(C语言)
程序员文章站
2022-05-20 13:53:14
...
题目描述
给定一个二叉树,返回它的中序 遍历。
示例:
输入: [1,null,2,3]
输出: [1,3,2]
递归:
void inorder(struct TreeNode* root, int* returnSize, int *ans){
if(root){
inorder(root->left,returnSize,ans);
ans[(*returnSize)++]=root->val;
inorder(root->right,returnSize,ans);
}
}
int TreeSize(struct TreeNode* root){
if(!root)
return 0;
return TreeSize(root->left)+TreeSize(root->right)+1;
}
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
int *ans=(int*) malloc(sizeof(int)*TreeSize(root));
*returnSize=0;
inorder(root, returnSize, ans);
return ans;
}
非递归:
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
struct TreeNode** stack=(struct TreeNode**)malloc((sizeof(struct TreeNode*)*100));
int* ans=(int*)malloc(sizeof(int)*100);
int i=0;
*returnSize=0;
while(i||root){
if(root){
stack[i++]=root;
root=root->left;
}
else{
root=stack[--i];
ans[(*returnSize)++]=root->val;
root=root->right;
}
}
return ans;
}
上一篇: 二叉树中,打印根节点到指定节点的路径——后序遍历的变型解答
下一篇: 二叉树的后序非递归遍历
推荐阅读
-
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
-
[PHP] 算法-根据前序和中序遍历结果重建二叉树的PHP实现
-
【算法】二叉树的前序、中序、后序、层序遍历和还原。
-
Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
-
C++实现LeetCode(105.由先序和中序遍历建立二叉树)
-
C语言数据结构之二叉树层序遍历实例讲解
-
C++实现LeetCode(889.由先序和后序遍历建立二叉树)
-
C++实现LeetCode(106.由中序和后序遍历建立二叉树)
-
详细了解C语言二叉树的建立与遍历
-
Liunx系统下的C语言练习:把句子中的单词倒序操作,输入"i am from shanghai",输出"shanghai from am i"