6.44编写递归算法:求二叉树中以元素值为x的节点为根的子树的深度.


#include <stdio.h>#include <malloc.h>
typedef struct BTNode {   
 int data;    
 struct BTNode *left, *right;
 }BTNode;
BTNode *creat_bt(){ //按前序建二叉树;    
BTNode *t;int x;    
printf("请输入数据:");     
scanf("%d",&x);    
if (x==0) 
{t=NULL;    printf("OK");    
}    
else     
{ t=(BTNode *)malloc(sizeof(BTNode));       
 t->data=x;       
  t->left=creat_bt();       
   t->right=creat_bt();    }//递归算法编写二叉树;    
   return t;
   }

//先以先序遍历递归找到元素值为x的结点,然后再递归求以x为根结点的子树的深度

BTNode *preorder_x(BTNode *root, int x)
{   BTNode *bt=root;   
 if (root != NULL){        if (bt->data==x)            return bt;        if(preorder_x(bt->left, x)||preorder_x(bt->right, x)){
 //核心同样是递归;            
 if(preorder_x(bt->left, x)) return preorder_x(bt->left, x);            else return preorder_x(bt->right,x);        }   
  }    return NULL;    }
int depth(BTNode *root,BTNode *bt){     
   if (root==NULL||bt == NULL)     return 0;    printf("%d\n",root->data);    
   if(root==bt) return 1;    
   else {        int h1=1,h2=1;     
      h1+=depth(root->left,bt);    
          h2+=depth(root->right,bt);      
            if(h1==h2) return 0;//这里表示无法找到bt节点;        return h1>h2?h1:h2;//找到bt节点之后,路径长度一定会不同;最终找到的路径可以相加;     
            }   
              }

int main(){        BTNode *root = creat_bt(); 
   int x;    printf("请输入x的值:");    
   scanf("%d", &x);       
    BTNode *p = preorder_x(root, x);  
      int d=depth(root,p);  
        printf("以元素值为x的结点为根的子树的深度为:%d", d);
}
  • 0
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: ros-6.44.6-x64-l6-60m.zip是一个文件压缩包的名称。其,ROS代表RouterOS操作系统,6.44.6代表版本号,x64表示支持64位处理器架构,l6表示该版本为Level 6许可证,60m表示该版本支持最多60个用户连接。 文件压缩包通常用于将多个文件或者文件夹打包成一个单独的文件,以便于存储、传输和共享。对于ros-6.44.6-x64-l6-60m.zip这个压缩包来说,它可能包含了安装RouterOS操作系统所需的一系列文件和文件夹,包括系统的核心文件、配置文件、驱动程序等等。这个压缩包的使用可以方便用户快速安装和部署RouterOS操作系统,同时也提供了一定数量的用户连接许可证。 使用这个压缩包时,我们可以首先将它下载到本地计算机,然后使用解压缩软件进行解压。解压后,我们可以找到对应的安装文件和许可证文件,按照相关的安装指南进行操作,以完成RouterOS操作系统的安装。在安装完成后,我们可以根据许可证的规定确定最多可以连接的用户数,并进行相应的网络配置和管理,以满足我们的需。 总而言之,ros-6.44.6-x64-l6-60m.zip是一个用于安装和部署RouterOS操作系统的文件压缩包,它包含了操作系统的相关文件和用户连接许可证。使用这个压缩包可以方便地进行RouterOS的安装和配置工作,以满足我们的网络需。 ### 回答2: ros-6.44.6-x64-l6-60m.zip是一个文件压缩包的名称。按照命名规则,文件名称的"ros"可能是指"RouterOS",它是一种基于Linux的操作系统,用于运行于MikroTik路由器设备上。 "6.44.6"是指该压缩包对应RouterOS的版本号。每个版本的RouterOS都有各自的更新和改进。 "x64"表示该版本是64位架构,适用于支持64位操作系统的设备。 "l6"代表该RouterOS版本的许可等级为Level 6。RouterOS有不同的许可等级,每个等级拥有不同的功能和限制。 "60m"可能代表了该版本RouterOS的许可有效期为60个月。RouterOS的许可期限可以根据购买的类型和许可等级而有所不同。 "zip"是一种常见的文件压缩格式,意味着该文件通过压缩算法进行了压缩,以便更有效地存储和传输。 综上所述,"ros-6.44.6-x64-l6-60m.zip"是一份包含RouterOS版本为6.44.6,64位架构,许可等级为Level 6,许可有效期为60个月的压缩文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值