建设一个网站哪家好,泉州市服务好的网站设计,坪山做网站的公司,通辽住房和城乡建设厅网站完全二叉树结点的度可能有1#xff0c;满二叉树的度只能为0或2
BST构建
BST是左孩子都比根节点小#xff0c;右孩子都比根节点大
二叉搜索树的插入#xff0c;删除#xff0c;调整
平衡树理解
任何一个平衡二叉树#xff0c;它的中序遍历都是一样的#xff0c;都是有…完全二叉树结点的度可能有1满二叉树的度只能为0或2
BST构建
BST是左孩子都比根节点小右孩子都比根节点大
二叉搜索树的插入删除调整
平衡树理解
任何一个平衡二叉树它的中序遍历都是一样的都是有序的从小到大
之所以有调整就是谁当根节点不同导致的。
作为根节点就需要提供两个信息一个是左孩子一个是右孩子。
那么中序遍历的过程就是先由根节点向左一直蔓延直到到底然后从左到右依次遍历遍历到根节点再从根节点向右遍历蔓延。想象一个有序序列找到任意一个起点这个起点就是所谓的树的根节点那么中序遍历就是左根右即从左到右就是从起点根节点先一直向左到底后再逐个输出那就是中序序列。有这样的性质就是因为左根右序列中的每个结点左侧都是它的左孩子它的右侧都是右孩子或者父母结点
即左侧只会是左孩子但右侧可能是右孩子或父母节点但由于左孩子都小于根节点所以一旦有右孩子那么只能先是右孩子即右孩子的优先级大于父母结点因为右孩子一定小于父母节点。
AVL树
平衡因子是根节点的定义即根节点的左右孩子高度差 如这里是4的平衡因子不满足条件其左子树右子树高度差大于1
求高度函数
typedef struct node {int data;node* lchild, * rchild;
}*tree;
int high(tree root) {if (root) {return max(high(root-lchild), high(root-rchild)) 1;}return 0;
}
AVL树的构建 AVL树的调整
中序遍历都是一样的不一样的就是根节点的确定即起点的确定
右旋
右旋的具体步骤
T向右旋转成为L的右结点L的右节点Y 放到 T的左孩子上 如何判断是否为AVL
AVL树高度 由于AVL树的左右子树都是AVL树
自变量是N,AVL树的高度。那么由于AVL树左右平衡根节点平衡所以对于高度为d的AVL树根节点占一层那么左子树默认左子树高一点高度为d-1,(此时加起来为d)右子树高度为d-2因为要满足左右子树高度差不大于1而且结点要尽可能少所以有 二分求矩阵的幂
快速幂