作业-11.3

1、自己实现课上写的代码功能

#include "bitree.h"

int main(int argc, const char *argv[])
{
treelist *P = creat_bitree();
linknode_point *Q = creat_link_tree();

printf("p=%p, q=%p\n", P, Q);

tree_to_link(P, Q, 1);



return 0;
}

#include "bitree.h"

//创建二叉树
treelist *creat_bitree()
{
char flag = '\0';
scanf(" %c", &flag);
if(flag == '#')
{
return NULL;
}
treelist *p = (treelist *)malloc(sizeof(treelist));
if(!p)
{
printf("申请失败\n");
return NULL;
}
p->data = flag;
p->Lchild = creat_bitree();
p->Rchild = creat_bitree();

return p;
}

//创建链式队列
linknode_point *creat_link_tree()
{
linknode_point *p = (linknode_point *)malloc(sizeof(linknode_point));
if(!p)
{
printf("入参为空\n");
return NULL;
}
p->format = NULL;
p->tail = NULL;

return p;
}

//创建节点
linknode *create_node_link_tree()
{
linknode *p = (linknode *)malloc(sizeof(linknode));
if(!p)
{
printf("入参为空\n");
return NULL;
}
p->data = 0;
p->next = NULL;

return p;
}

//尾插
int tail_node_link(linknode_point *p, char in_data)
{
if(!p)
{
printf("入参为空\n");
return -1;
}
linknode *q = create_node_link_tree();
if(!q)
{
printf("入参为空\n");
return -1;
}
if(!p->format)
{
q->data = in_data;
p->format = q;
p->tail = q;
}else
{
q->data = in_data;
p->tail->next = q;
p->tail = q;
}

return 0;
}

//二叉树遍历方式
int tree_to_link(treelist *p, linknode_point *q, int flag)
{
int i = 0;
if(!q)
{
printf("1入参为空, p = %p, q = %p\n", p, q);
return -1;
}
switch(flag)
{
case 1:
i = first_print_tree(p, q);
if(!i)
{
all_printf_tree_link(q);
}
break;

default:
break;
}
}

//先序遍历
int first_print_tree(treelist *p, linknode_point *q)
{
treelist *tmp = p;
if(tmp)
{
tail_node_link(q, tmp->data);
tree_to_link(p->Lchild, q, 1);
tree_to_link(p->Rchild, q, 1);
return 0;
}
return 1;

}

//中序遍历

//后序遍历

//二叉树队列遍历
int all_printf_tree_link(linknode_point *p)
{
if(!p)
{
printf("入参为空\n");
return -1;
}
linknode *tmp = p->format;
while(tmp)
{
printf("%c, ", tmp->data);
tmp = tmp->next;
}
putchar(10);

return 0;
}

#ifndef __BITREE_H__
#define __BITREE_H__

#include <stdio.h>
#include <stdlib.h>
//二叉树结构体
typedef struct bitree
{
char data;
struct bitree *Lchild, *Rchild;
}treelist;
//二叉树遍历所需结构体
typedef struct linknode
{
char data;
struct linknode *next;
}linknode;

typedef struct
{
linknode *format, *tail;
}linknode_point;

//创建二叉树
treelist *creat_bitree();

//创建链式队列
linknode_point *creat_link_tree();

//创建节点
linknode *create_node_link_tree();

//二叉树遍历方式
int tree_to_link(treelist *p, linknode_point *q, int flag);

//先序遍历
int first_print_tree(treelist *p, linknode_point *q);

//中序遍历

//后序遍历


//二叉树队列遍历
int all_printf_tree_link(linknode_point *p);



#endif
   

2、预习快速排序的相关内容

//快速排序
void quick_sort(int num[], int low, int high )
{
    int i,j,temp;
    int tmp;

    i = low;
    j = high;
    tmp = num[low];   //任命为中间分界线,左边比他小,右边比他大,通常第一个元素是基准数

    if(i > j)  //如果下标i大于下标j,函数结束运行
    {
        return;
    }

    while(i != j)
    {
        while(num[j] >= tmp && j > i)   
        {
            j--;
        }

        while(num[i] <= tmp && j > i)
        {
            i++;
        }

        if(j > i)
        {
            temp = num[j];
            num[j] = num[i];
            num[i] = temp;
        }
    }

    num[low] = num[i];
    num[i] = tmp;

    quick_sort(num,low,i-1);
    quick_sort(num,i+1,high);
}

3、先序:ABDFGHIEC 中序:FDHGIBEAC画出二叉树

4、计算时间复杂度

·f(n) = 1+5n^2-10n+5

T(n) = O(n^2)

5、思维导图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值