电脑网站兼职在哪里做建设网站语言选择
电脑网站兼职在哪里做,建设网站语言选择,做推广的网站名称,百度账号中心官网大家好#xff0c;我是苏貝#xff0c;本篇博客带大家刷题#xff0c;如果你觉得我写的还不错的话#xff0c;可以给我一个赞#x1f44d;吗#xff0c;感谢❤️ 目录 1. 二叉树的前序遍历2. 二叉树的中序遍历3. 二叉树的后序遍历 1. 二叉树的前序遍历
点击查看题目 根… 大家好我是苏貝本篇博客带大家刷题如果你觉得我写的还不错的话可以给我一个赞吗感谢❤️ 目录 1. 二叉树的前序遍历2. 二叉树的中序遍历3. 二叉树的后序遍历 1. 二叉树的前序遍历
点击查看题目 根据提示我们应该先动态开辟一个数组之后按前序遍历的顺序将二叉树的值插入数组中最后再返回这个数组。我们再来看函数给定的形参是什么root是指向二叉树的根节点的指针*returnsize是数组的大小而非题目给我们已经开辟好的数组。 首先我们要想开辟数组那么我们需要知道数组的大小也就是二叉树的节点总数用下面这个函数来返回节点总数
int TreeSize(struct TreeNode* root)
{if(rootNULL)return 0;return 1TreeSize(root-left)TreeSize(root-right);// return rootNULL?0:// 1TreeSize(root-left)TreeSize(root-right);
}然后我们将二叉树的值按前序遍历的顺序放入数组中。那数组的下标如何控制呢一般可以用全局变量但是要注意在每次调用下面这个函数时将i置为0。否则进行第二次调用该函数时数组的下标是从n二叉树个数开始的而不是从0开始
int i0;void _preorderTraversal(struct TreeNode* root, int* arr)
{if(rootNULL)return;arr[i]root-val;_preorderTraversal(root-left,arr);_preorderTraversal(root-right,arr);
}基于全局变量的不方便我们也可以采用下面这种方法即传一个初始化为0的变量的地址进来。
void _preorderTraversal(struct TreeNode* root, int* arr,int* pi)
{if(rootNULL)return;arr[(*pi)]root-val;_preorderTraversal(root-left,arr,pi);_preorderTraversal(root-right,arr,pi);
}好的我们来看最终代码
int TreeSize(struct TreeNode* root)
{if(rootNULL)return 0;return 1TreeSize(root-left)TreeSize(root-right);// return rootNULL?0:// 1TreeSize(root-left)TreeSize(root-right);
}void _preorderTraversal(struct TreeNode* root, int* arr,int* pi)
{if(rootNULL)return;arr[(*pi)]root-val;_preorderTraversal(root-left,arr,pi);_preorderTraversal(root-right,arr,pi);
}int* preorderTraversal(struct TreeNode* root, int* returnSize) {int nTreeSize(root);*returnSizen;int* arr(int*)malloc(sizeof(int)*n);int i0;_preorderTraversal(root,arr,i);return arr;
}2. 二叉树的中序遍历
点击查看题目
二叉树的中序遍历和下面的后序遍历思路同上下面就只展示代码不做解释了
int TreeSize(struct TreeNode* root)
{return rootNULL?0:1TreeSize(root-left)TreeSize(root-right);
}void _inorderTraversal(struct TreeNode* root,int* arr,int* pi)
{if(rootNULL)return;_inorderTraversal(root-left,arr,pi);arr[(*pi)]root-val;_inorderTraversal(root-right,arr,pi);
}int* inorderTraversal(struct TreeNode* root, int* returnSize) {int nTreeSize(root);*returnSizen;int* arr(int*)malloc(sizeof(int)*n);int i0;_inorderTraversal(root,arr,i);return arr;
}3. 二叉树的后序遍历
点击查看题目
int TreeSize(struct TreeNode* root)
{return rootNULL?0:1TreeSize(root-left)TreeSize(root-right);
}void _postorderTraversal(struct TreeNode* root,int* arr,int* pi)
{if(rootNULL)return;_postorderTraversal(root-left,arr,pi);_postorderTraversal(root-right,arr,pi);arr[(*pi)]root-val;
}int* postorderTraversal(struct TreeNode* root, int* returnSize) {int nTreeSize(root);*returnSizen;int* arr(int*)malloc(sizeof(int)*n);int i0;_postorderTraversal(root,arr,i);return arr;
}好了那么本篇博客就到此结束了如果你觉得本篇博客对你有些帮助可以给个大大的赞吗感谢看到这里我们下篇博客见❤️
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/87472.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!