随笔分类 -  Tree

摘要:为五个使用频率不同的字符设计哈夫曼编码,下列方案中哪个不可能是哈夫曼编码? A. 00,100,101,110,111 B. 000,001,01,10,11 C. 0000,0001,001,01,1 D. 000,001,010,011,1 A 不违背前缀法则,但它建成的树并不全是度为二或0的树 阅读全文
posted @ 2021-12-17 20:02 maintains 阅读(152) 评论(0) 推荐(0)
摘要:void InorderTraversal( BinTree BT ){ BinTree T = BT; Stack S = CreateStack(); while(T!=NULL || !IsEmpty(S)); { while(T != NULL) { Push(S,T); T = T->Le 阅读全文
posted @ 2021-12-17 15:07 maintains 阅读(34) 评论(0) 推荐(0)
摘要:这题怎么说呢,不难 首先怎么通过数据建一棵树, 这当然再简单不过 然后,输出叶节点 课本上叶教过,很简单是不是,只有判断左右子树是不是空,空的话,就输出 那要层序输出,这我们也学过是不是,老模板了 先把根节点压入队列 再出队,如果左右是空,输出,如果不空,左右入队 再循环使用。 非常简单有没有0.0 阅读全文
posted @ 2021-12-16 09:46 maintains 阅读(288) 评论(0) 推荐(0)
摘要:这题挺简单的 0.0 emmmm 习题4.5 顺序存储的二叉树的最近的公共祖先问题 (25 分) 设顺序存储的二叉树中有编号为i和j的两个结点,请设计算法求出它们最近的公共祖先结点的编号和值。 输入格式: 输入第1行给出正整数n(≤1000),即顺序存储的最大容量;第2行给出n个非负整数,其间以空格 阅读全文
posted @ 2021-12-14 16:28 maintains 阅读(138) 评论(0) 推荐(0)
摘要:看到这题目时我的想法是用递归来判断 我想只要根大于左子树且小于右子树根结点就可以 但是,这个想法是错误的, 3 2 5 1 10 4 6 这个就不是二叉搜索树。所以怎么来判断一颗树是否为二叉搜索树呢。 我们要判断这个树根结点是不是大于左子树最大值,且小于右子树最小值 一直递归判断, 但是只有根结点的 阅读全文
posted @ 2021-12-14 14:23 maintains 阅读(95) 评论(0) 推荐(0)
摘要:练习4.3 堆中的路径 (25 分) 将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。 输入格式: 每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N 阅读全文
posted @ 2021-12-13 15:08 maintains 阅读(48) 评论(0) 推荐(0)
摘要:这应该是一道典型考察的平衡二叉树的操作的题目。 练习4.2 平衡二叉树的根 (25 分) 将给定的一系列数字插入初始为空的AVL树,请你输出最后生成的AVL树的根结点的值。 输入格式: 输入的第一行给出一个正整数N(≤20),随后一行给出N个不同的整数,其间以空格分隔。 输出格式: 在一行中输出顺序 阅读全文
posted @ 2021-12-13 13:11 maintains 阅读(141) 评论(0) 推荐(0)
摘要:实验思考 给前中序,怎么输出后序? 自我思考 还是一样跟中后序输出前序一样,只不过后序是最后一个是根,前序是第一个是根 //T->Left = BuildTree(Preorder + 1, Inorder, p);//中序中p把树分为两部分,当p等于0时没有左子树如上返回NULL,p代表左子树长度 阅读全文
posted @ 2021-12-13 09:36 maintains 阅读(113) 评论(0) 推荐(0)
摘要:/* 在后续遍历中最后结点4就是根,在中续中找到它,左边是左树,右是右,在4的左子树中一共有3个元素,后续中打印出来前3个元素也是根的左子树,由于后序的性质所以左子树的根会最后输出,所以我们只要知道左子树有多少元素就可以在后序中找到左子树的根, 怎么找呢,在中序中找到根的位置减1就知道左树有多少元素 阅读全文
posted @ 2021-12-13 08:06 maintains 阅读(35) 评论(0) 推荐(0)