当前位置: 首页 > news >正文

响应式网站和自适应网站南宁本地网站

响应式网站和自适应网站,南宁本地网站,网络运营推广是做什么的,加强网站及微信平台建设【2021年山西大学真题】将二叉树中所有非终端结点的左右子树交换位置,可以得到原二叉树的 镜像二叉树,如图。假设二叉树的存储形式为(lchild,data,rchild),给出求镜像二叉树的算法: &#xff0…

【2021年山西大学真题】将二叉树中所有非终端结点的左右子树交换位置,可以得到原二叉树的

镜像二叉树,如图。假设二叉树的存储形式为(lchild,data,rchild),给出求镜像二叉树的算法:

(1)给出算法的基本思想;

(2)根据设计思想,写出算法;

(3)讨论算法的时间复杂度和空间复杂度.


(1)设计一个算法,将二叉树中所有非叶节点的左右子树交换位置,从而得到原二叉树的镜像二叉树。我们可以使用递归的方式来实现这个算法。
算法的基本思想如下:
1. 首先判断当前节点是否为空,如果为空则返回。
2. 交换当前节点的左右子树。
3. 对当前节点的左子树调用递归函数,实现左子树的镜像。
4. 对当前节点的右子树调用递归函数,实现右子树的镜像。

(2)下面是使用 C 语言编写的实现上述算法的代码:

```c
#include <stdio.h>
#include <stdlib.h>

typedef struct Node {
    int data;
    struct Node* left;
    struct Node* right;
} Node;

void mirrorBinaryTree(Node* root) {
    if (root == NULL) {
        return; // 如果当前节点为空,直接返回
    }

    // 交换当前节点的左右子树
    Node* temp = root->left;
    root->left = root->right;
    root->right = temp;

    // 递归处理左子树和右子树
    mirrorBinaryTree(root->left);
    mirrorBinaryTree(root->right);
}

// 测试代码
void printBinaryTree(Node* root) {
    if (root == NULL) {
        return;
    }

    printf("%d ", root->data);
    printBinaryTree(root->left);
    printBinaryTree(root->right);
}

int main() {
    Node* root = (Node*)malloc(sizeof(Node));
    Node* node1 = (Node*)malloc(sizeof(Node));
    Node* node2 = (Node*)malloc(sizeof(Node));
    Node* node3 = (Node*)malloc(sizeof(Node));
    Node* node4 = (Node*)malloc(sizeof(Node));
    Node* node5 = (Node*)malloc(sizeof(Node));
    Node* node6 = (Node*)malloc(sizeof(Node));

    root->data = 1;
    node1->data = 2;
    node2->data = 3;
    node3->data = 4;
    node4->data = 5;
    node5->data = 6;
    node6->data = 7;

    root->left = node1;
    root->right = node2;
    node1->left = node3;
    node1->right = node4;
    node2->left = node5;
    node2->right = node6;
    node3->left = NULL;
    node3->right = NULL;
    node4->left = NULL;
    node4->right = NULL;
    node5->left = NULL;
    node5->right = NULL;
    node6->left = NULL;
    node6->right = NULL;

    printf("原二叉树:");
    printBinaryTree(root);
    printf("\n");

    mirrorBinaryTree(root);

    printf("镜像二叉树:");
    printBinaryTree(root);
    printf("\n");

    return 0;
}
```

在上述代码中,我们首先定义了一个 `Node` 结构体来表示二叉树的节点。然后,我们编写了一个递归函数 `mirrorBinaryTree`,用于实现二叉树节点交换的操作。通过递归调用,我们可以将二叉树中所有非叶节点的左右子树交换位置,并得到镜像二叉树。在 `main` 函数中,我们创建了一个测试用例,并分别输出原二叉树和镜像二叉树的结果。

(3)算法的时间复杂度是 O(n),其中 n 是二叉树中的节点数。算法的空间复杂度是 O(h),其中 h 是二叉树的高度。

 

http://www.yayakq.cn/news/83908/

相关文章:

  • 网站建设蛋蛋28建设工程公司组织架构图
  • 蜂蜜做的好网站或案例北京企业官网建设
  • 野狼seo团队钦州seo
  • 织梦网站怎么修改内容网站定制 动易
  • 51自学网官网入口东莞seo排名收费
  • asp网站密码做物流的网站都有什么风险
  • 中国五码一级做爰网站整合营销传播的效果表现为
  • 国外手做网站用wordpress做企业门户
  • 做网站一定要认证吗口碑好的网站开发
  • 拓展公司网站建设哪一些网站使用vue做的
  • 网站建设 用英文怎么说百度网盘怎么领取免费空间
  • 金湖县网站建设wordpress登陆不跳转
  • 易企秀网站怎么做轮播图腾讯企业qq官网
  • 天津网站建设电焊机上海抓捕236名
  • 常州天启建设公司网站网站布局结构分类
  • 鸿运通网站建设网站建设代理多少钱
  • 绵阳top唯艺网站建设购买平台有哪些
  • 安徽智农网络信息技术服务有限公司 网站开发网站cms系统源码
  • 常德网站公司蒙文网站开发
  • 软件下载网站cmswordpress数字链接出现404
  • 网站制作 那种语言好thinkphp做的商城网站分销平台
  • 网站开发软件著作权归谁专业团队怎样建设网站
  • 网站建设专家工作内容网站上传的视频播放卡
  • 福建省住房和城乡建设网站有专门做房孑特卖的网站吗
  • 山东网站建设优化技术莱州网站建设哪家好
  • 网站建设前端工具免费制作logo软件
  • 网站规划包含哪些内容网站风格变化
  • 临沂网站建设举措怎么制作灯笼
  • 英文成品网站模板下载网站建设绪论
  • vue适合什么网站开发青岛自媒体公司排名