94. 二叉树的中序遍历
程序员文章站
2024-01-11 16:46:40
...
c代码:
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* struct TreeNode *left;
* struct TreeNode *right;
* };
*/
/**
* Return an array of size *returnSize.
* Note: The returned array must be malloced, assume caller calls free().
*/
//访问节点并存储
void visit(struct TreeNode* root,int **result,int* returnSize){
if(!*result){//如果空
*result=(int *)malloc(sizeof(int));
}else{
//重新分配内存
*result=(int *)realloc(*result,(*returnSize+1)*sizeof(int));
}
(*result)[(*returnSize)++]=root->val;
}
//中序
void inorder(struct TreeNode* root,int **result,int* returnSize){
if(root){
inorder(root->left,result,returnSize);
visit(root,result,returnSize);
inorder(root->right,result,returnSize);
}
}
//中序遍历
int* inorderTraversal(struct TreeNode* root, int* returnSize) {
int *result=NULL;
*returnSize=0;
inorder(root,&result,returnSize);
return result;
}
Java代码:
/**
* Definition for a binary tree node.
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
class Solution {
// 访问节点并存储
public void visit(TreeNode root, List<Integer> result) {
// 在Java中这个函数实现起来就省事了很多,不用像C语言那样临时分配内存
result.add(root.val);
}
// 中序
public void inorder(TreeNode root, List<Integer> result) {
if (root != null) {
inorder(root.left, result);
visit(root, result);
inorder(root.right, result);
}
}
public List<Integer> inorderTraversal(TreeNode root) {
List<Integer> result = new ArrayList<Integer>();
inorder(root, result);
return result;
}
}
上一篇: 事件模型
下一篇: 聊聊openfeign的超时和重试