3. 平衡二叉树 梦里梦外; 2022-04-02 08:44 112阅读 0赞 <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td> <td>2018年11月20日 星期二 08:00</td> </tr> <tr> <td>折扣</td> <td>0.8</td> <td>折扣时间</td> <td>2018年12月10日 星期一 23:55</td> </tr> <tr> <td>允许迟交</td> <td>否</td> <td>关闭时间</td> <td>2018年12月20日 星期四 23:55</td> </tr> </tbody> </table> 程序输入一个字符串(只包含小写字母),请按照字符的输入顺序建立平衡二叉排序树,并分别输出二叉树的先序序列、中序序列和后序序列,最后输出该二叉树向左旋转 90 度后的结构。 例如:向左旋转 90 度后,以每层向里缩进 4 个空格的方式输出,输出结果为: i g f a d c b **输入:agxnzyimk** 输出: Preorder: xigamknzy Inorder: agikmnxyz Postorder: agknmiyzx Tree: z y x n m k i g a <table> <thead> <tr> <th> </th> <th>测试输入<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=input&lang=zh_cn" rel="nofollow"><img alt="关于“测试输入”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>期待的输出<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=expectedoutput&lang=zh_cn" rel="nofollow"><img alt="关于“期待的输出”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>时间限制<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=timelimit&lang=zh_cn" rel="nofollow"><img alt="关于“时间限制”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>内存限制<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=memlimit&lang=zh_cn" rel="nofollow"><img alt="关于“内存限制”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> <th>额外进程<a href="http://online.bit.edu.cn/moodle/help.php?component=programming&identifier=nproc&lang=zh_cn" rel="nofollow"><img alt="关于“{$a} 个额外进程”的帮助" src="http://online.bit.edu.cn/moodle/theme/image.php/lambda/core/1539000325/help"></a></th> </tr> </thead> <tbody> <tr> <td>测试用例 1</td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77939&test=100772&type=in&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>agxnzyimk↵</li> </ol></td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77939&test=100772&type=out&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>Preorder: xigamknzy↵</li> <li>Inorder: agikmnxyz↵</li> <li>Postorder: agknmiyzx↵</li> <li>Tree:↵</li> <li> z↵</li> <li> y↵</li> <li>x↵</li> <li> n↵</li> <li> m↵</li> <li> k↵</li> <li> i↵</li> <li> g↵</li> <li> a↵</li> </ol></td> <td>1秒</td> <td>64M</td> <td>0</td> </tr> <tr> <td>测试用例 2</td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77939&test=100773&type=in&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>asdfghjkl↵</li> </ol></td> <td><a href="http://online.bit.edu.cn/moodle/mod/programming/testcase/download_io.php?id=77939&test=100773&type=out&download=0" rel="nofollow">以文本方式显示</a> <ol> <li>Preorder: gdafjhlks↵</li> <li>Inorder: adfghjkls↵</li> <li>Postorder: afdhksljg↵</li> <li>Tree:↵</li> <li> s↵</li> <li> l↵</li> <li> k↵</li> <li> j↵</li> <li> h↵</li> <li>g↵</li> <li> f↵</li> <li> d↵</li> <li> a↵</li> </ol></td> <td>1秒</td> <td>64M</td> <td>0</td> </tr> </tbody> </table> #include "stdio.h" #include "stdlib.h" typedef struct Avnode { char data; struct Avnode * lchild, *rchild; }NODE; NODE *root = NULL; int Height(NODE*p){ if(p == NULL) return 0; else{ if(Height(p->lchild) > Height(p->rchild)) return Height(p->lchild)+1; else return Height(p->rchild)+1; } } NODE* LL(NODE *p){ NODE *q; q = p->lchild; p->lchild = q->rchild; q->rchild = p; return q; } NODE* RR(NODE *p){ NODE *q = p->rchild; p->rchild = q->lchild; q->lchild = p; return q; } NODE* LR(NODE *p){ NODE *q = p->lchild, *q1 = q->rchild; q->rchild = q1->lchild; p->lchild = q1; q1->lchild = q; p->lchild = q1->rchild; q1->rchild = p; return q1; } NODE* RL(NODE *p){ NODE *q = p->rchild, *q1 = p->rchild->lchild; q->lchild = q1->rchild; p->rchild = q1; q1->rchild = q; p->rchild = q1->lchild; q1->lchild = p; return q1; } NODE* Insert(char c, NODE *p){ if(p == NULL){ p = (NODE*)malloc(sizeof(NODE)); p->data = c; p->lchild = NULL; p->rchild = NULL; return p; } else{ if(c < p->data){ p->lchild = Insert(c, p->lchild); if(Height(p->lchild) - Height(p->rchild) > 1){ if(c < p->lchild->data){ p = LL(p); } else{ p = LR(p); } } return p; } else{ p->rchild = Insert(c, p->rchild); if(Height(p->lchild) - Height(p->rchild) < -1){ if(c > p->rchild->data){ p = RR(p); } else{ p = RL(p); } } return p; } } } void Inorder(NODE *head) { if (head->lchild) Inorder(head->lchild); printf("%c", head->data); if (head->rchild) Inorder(head->rchild); } void Preorder(NODE *head) { printf("%c", head->data); if (head->lchild) Preorder(head->lchild); if (head->rchild) Preorder(head->rchild); } void Postorder(NODE *head) { if (head->lchild) Postorder(head->lchild); if (head->rchild) Postorder(head->rchild); printf("%c", head->data); } void Print(NODE *p, int depth){ int i; if (p->rchild) Print(p->rchild, depth + 1); for (i = 0; i < depth; i++) printf(" "); printf("%c\n", p->data); if (p->lchild) Print(p->lchild, depth + 1); } int main() { char c; while (1) { c = getchar(); if (c == '\n') break; root = Insert(c, root); } printf("Preorder: "); Preorder(root); putchar('\n'); printf("Inorder: "); Inorder(root); putchar('\n'); printf("Postorder: "); Postorder(root); putchar('\n'); printf("Tree:\n"); Print(root, 0); return 0; }
相关 平衡二叉树 <table style="width:1615px; margin-bottom:20px; background-color:transparent"> <tbody> 淡淡的烟草味﹌/ 2022年06月02日 07:59/ 0 赞/ 278 阅读
相关 平衡二叉树 平衡二叉树(Balanced Binary Tree)是二叉查找树的一个进化体,也是第一个引入平衡概念的二叉树。1962年,G.M. Adelson-Velsky 和 E.M. 墨蓝/ 2022年05月28日 08:57/ 0 赞/ 428 阅读
相关 平衡二叉树 写在前面 > 剑指offer:平衡二叉树 题目要求 > 输入一棵二叉树,判断该二叉树是否是平衡二叉树。平衡二叉树要求任意一个节点的左右字数之间的高度差不超过1。 浅浅的花香味﹌/ 2022年05月17日 01:54/ 0 赞/ 298 阅读
相关 平衡二叉树 平衡二叉树又称AVL树。它或者是颗空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的深度之差的绝对值不超过1。若将二叉树节点的平衡因子BF定 骑猪看日落/ 2022年05月17日 01:24/ 0 赞/ 275 阅读
相关 3. 平衡二叉树 <table> <tbody> <tr> <td>成绩</td> <td>10</td> <td>开启时间</td> <td>2018 梦里梦外;/ 2022年04月02日 08:44/ 0 赞/ 113 阅读
相关 平衡二叉树 时间限制:1秒 空间限制:32768K 热度指数:160212 [ 算法知识视频讲解][Link 1] 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 向右看齐/ 2022年03月08日 01:44/ 0 赞/ 327 阅读
相关 平衡二叉树 平衡二叉树介绍 是由前苏联的两位数学家G.M.Adelse-Velskil和E.M.Landis提出,因此一般也称作AVL树,AVL树本质还是一棵二叉查找树,只是在其基础 青旅半醒/ 2022年02月24日 07:54/ 0 赞/ 357 阅读
相关 平衡二叉树 (平衡查找树) 平衡二叉树(AVL 树) 看一个案例(说明二叉排序树可能的问题) ![1460404-20190609204205330-1398837969.png][] 上 小咪咪/ 2021年10月29日 07:24/ 0 赞/ 469 阅读
相关 平衡二叉树 package com.avl; / @Auther: 大哥的叔 @Date: 2019/8/18 06:12 @ 忘是亡心i/ 2021年10月15日 05:37/ 0 赞/ 427 阅读
相关 二叉平衡树 二叉平衡树 说起这个树,我找了整整两天的时间,刚开始考虑的不周全,然后就一直该一直该,一直加一直加。 定义: 它是一颗空疏或它的左右两个子树的高度差的绝对值不超过 Dear 丶/ 2021年09月22日 09:42/ 0 赞/ 479 阅读
还没有评论,来说两句吧...