确定入栈顺序,如何求出不正确的出栈顺序
使用平方探测,且表的大小是素数,那么当表至少有一半是空的时候,总能够插入一个新的元素。
建立另外一个大约两倍大的表(而且使用一个相关的新散列函数),扫描整个原始散列表,计算每个元素的新散列值并将其插入到新表中。
遍历分分先(前)序、中序、后序 先序:先访问根结点、左结点、右结点 中序:先访问左结点、根结点、右结点 后序:先访问左结点、右结点、根结点 利用堆栈实现中序排序,实现的文件见附件:tst.c 设计思路:
首先,一直往左边搜索,一路压栈,直到左节点为空,当前节点为当前节点的左节点。 判断该节点右孩子是否为空,如果不为空,则打印出当前节点,并将其右节点压入堆栈,同时置标志位为1,表示需要搜索左节点;当前节点为当前节点的右节点。 否则,打印当前节点,当前节点等于弹出的栈的数据。 else { printf(“now=%d\n”, now->data); if(sh->next != NULL) now = popStack(&sh); else now = NULL;
flag = 0; }
root–>node 叫深度,node –> 自身最低叶子节点, 叫高度
伸展树是一种二叉排序树,它能在O(logn)内完成插入、查找和删除操作。它的优势在于不需要记录用于平衡树的冗余信息。
#include <stdio.h>
#include <malloc.h>
http://blog.csdn.net/21aspnet/article/details/6729724