二叉树
龙曦lc
千里之行,始于足下。
展开
-
删除以x为根的结点并释放其子树
算法思想:按照先序遍历的思想,查找值为x的结点,若找到,则按照后序遍历的思想进行删除,先删除他的左子树,再删除他的右子树,最后删除根节点,并将根节点指针置为空。原创 2023-04-17 23:08:49 · 151 阅读 · 0 评论 -
删除二叉树中所有比x小的结点
算法思想:先序遍历二叉树,如果当前结点等于x,则删除他的左子树;如果当前结点大于x,则递归查找他的左子树中小于x的结点进行删除;如果当前结点小于x,则删除他的左子树并删除当前结点,然后递归查找他右子树中小于x的结点进行删除。原创 2023-04-25 20:16:22 · 336 阅读 · 0 评论 -
计算二叉树中的平衡因子,并返回不平衡的个数,同时计算平衡二叉树的高度
计算平衡因子并返回不平衡的个数:先序遍历二叉树,计算左右子树的深度,再利用左子树减右子树作为该结点的平衡因子;如果该结点平衡因子大于等于2或者小于等于-2,则为不平衡结点。重复上述步骤,直到最终求得所有不平衡二叉树结点个数。计算平衡二叉树深度:先序遍历二叉树,每次选择子树高度较大的子树进行计算,最终求得整棵树高度。原创 2023-04-25 21:02:55 · 426 阅读 · 0 评论 -
计算二叉树度为0的结点、度为1的结点、度为2的结点、树的高度
【代码】计算二叉树度为0的结点、度为1的结点、度为2的结点、树的高度。原创 2023-04-17 22:57:19 · 1116 阅读 · 0 评论 -
求一棵二叉树的最大宽度
算法思想:层次遍历二叉树(注意栈中存放的是当前树的结点和所在层数),如果当前遍历结点和前一个结点在同一层,则当前层的结点数加一,如果当前层的结点数大于最大宽度,则更新最大宽度;如果当前遍历结点和前一个结点不在同一层,则更新当前结点层数,并将当前层的节点值置为1;如果当前结点左孩子不为空,左孩子入队;如果当前结点右孩子不为空,右孩子入队;重复上述步骤,直到层次遍历完树中全部结点。原创 2023-04-17 21:00:37 · 374 阅读 · 0 评论 -
树的层次遍历
【代码】树的层次遍历。原创 2023-04-08 22:10:14 · 198 阅读 · 0 评论 -
层次遍历+中序遍历构造一棵二叉树
层次遍历+中序遍历建树的思想:层次遍历中根节点先于左右子树访问,所有每次确定二叉树(子树)的根节点,然后再从中序序列中确定该根节点的左右子树,再确定左右子树的层次遍历序列,最后递归创建左子树和右子树,便能递归创建整棵子树。原创 2023-04-10 10:25:39 · 980 阅读 · 1 评论 -
二叉树的先序中序后序非递归实现
后序遍历二叉树算法思想:①沿着根节点的左孩子,依次入栈,直到左孩子为空;②读取栈顶元素:若其右孩子不为空,且未被访问过,则右子树转向执行①;否则,栈顶元素出栈并访问。中序遍历二叉树算法思想:①沿着根的左孩子依次入栈,直到左孩子为空。②栈顶元素出栈并访问,若其右孩子为空,则继续执行②;③若右孩子不为空,则执行步骤①。先序遍历二叉树算法思想:①沿着根的左孩子依次访问并入栈,直到左孩子为空。②栈顶元素出栈,若其右孩子为空,则继续执行②;③若右孩子不为空,则执行步骤①。原创 2023-04-29 17:12:47 · 189 阅读 · 0 评论 -
通过给定的先序遍历和中序遍历构造一棵二叉树
【代码】通过给定的先序遍历和中序遍历构造一棵二叉树。原创 2023-04-08 21:35:42 · 188 阅读 · 0 评论