1 typedef struct TreeNode *BinTree;2typedef BinTree Position; 3struct TreeNode{4 ElementType Data;5 BinTree Left;6 BinTree Right; 7}; 8BinTree BT;9void LevelOrderTraversal( BinTree BT )//二叉树的层序遍历,用队列方法,一层一层访问的10{
11 Queue Q;BinTree T;
12if(!BT) return;//若是空树则直接返回13 Q=CreateQueue(MaxSize);//创建并初始化队列Q14 AddQ(Q,BT);
15while(!IsEmptyQ(Q)){
1...
一.思维导图二.重要概念的笔记1.一般树的存储:1.双亲表示法:求父节点方便。
2.孩子表示法:求子节点方便。
3.双亲孩子表示法:求父节点和子节点都很方便。
4.二叉树表示法:将一颗普通树转化为二叉树。2.二叉树的性质:1.在二叉树的第i层上至多有2^(i-1)个结点(i>0)。
2.深度为k的二叉树至多有2^k-1个结点(k>0)。
3.对于任意一棵二叉树,如果其叶结点为N0,而度数为2的结点总数为N2,则N0=N2+1。
4.具有n个结点的完全二叉树的...
完全二叉树的性质定义满二叉树
: 一棵深度为k,且有 \(2^{k+1}-1\) 个节点的二叉树,称为满二叉树(Full Binary Tree)。 这种树的特点是每一层上的节点数都是最大节点数。完全二叉树
: 而在一棵二叉树中,除最后一层外,若其余层都是满的,并且最后一层或者是满的,或者是在右边缺少连续若干节点,则此二叉树为完全二叉树(Complete Binary Tree)。高度(深度)
: 即层数k,注意【根】定义为\(height(root)=0\)。性质具有n个节点...
说在前面的话 最近没事将大学里的《数据结构》(严蔚敏,吴伟民著)一书重拾温习,受益颇多,才发现工作之中诸多经验问题都找到了理论支撑。 当时觉得没用的书,现在只能嘲笑当时得多low... 现在依然很low... --! 事件背景 因实际工作中,遇到一个关于权重的问题,需要将数据关系中最大权重的路径找到,然后就想到了《数据结构》中的DFS... 此事勾起了我码砖的激情,让我本已平静的心再次荡漾... 为了简单说明这...
2756:二叉树查看提交统计提示提问总时间限制: 1000ms 内存限制: 65536kB描述如上图所示,由正整数1, 2, 3, ...组成了一棵无限大的二叉树。从某一个结点到根结点(编号是1的结点)都有一条唯一的路径,比如从10到根结点的路径是(10, 5, 2, 1),从4到根结点的路径是(4, 2, 1),从根结点1到根结点的路径上只包含一个结点1,因此路径就是(1)。对于两个结点x和y,假设他们到根结点的路径分别是(x1, x2, ... ,1)和(y1, y2, ... ,1)(这里...
题目:给定一个二叉树,返回它的中序 遍历。来源:https://leetcode-cn.com/problems/binary-tree-inorder-traversal/法一:网上的代码思路:利用栈的递归,对每次取的节点进行标记,第一次遍历该节点时,标记为灰色,左子树和右子树标记为白色,注意入栈的顺序是右 中 左,因为最后存储的顺序的左 中 右.# Definition for a binary tree node.class TreeNode:def__init__(self, x):self.val = xself.left = Noneself.right = None...
1 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。2 思路和方法 平衡二叉树,又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。这个方案很好的解决了二叉查找树退化成链表的问题,把插入,查找,删除的时间复杂度最好情况和最坏情况都维持在O(logN)。但是频繁旋转会使插入和删除牺牲掉O(logN)左右的时间,不过相对...
【问题】给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。【思路】这道题目很坑人的就是parent指针不叫parent,叫做next, 也太奇葩了吧,不过无所谓啦,中序遍历的下一个节点主要分为两种情况:情况一: 该节点存在右子树,则右子树的最左端的节点即为该节点的下一节点,我们遍历去寻找就可以了!情况二: 该节点不存在右子树,则可以分成...
如图完全二叉树(存在单分支)对应的二叉链表求空指针域即求先孩子结点个数×2再+1(此处的1就是单分支结点的空指针域)深度为9的完全二叉树前8层是满二叉树,共2?-1=255个结点第9层有500-255=245个结点(245为奇数可知其父结点一定有单分支),其父结点个数为244/2+1=123(其中有一个单分支结点)第8层有2?=128个结点,其中叶子结点个数128-123=5(不明白看下图)所以空指针域个数=245×2+5×2+1=501个 纯手打不容易,希望有帮...
树结构练习——排序二叉树的中序遍历Time Limit: 1000MS Memory limit: 65536K题目描述在树结构中,有一种特殊的二叉树叫做排序二叉树,直观的理解就是——(1).每个节点中包含有一个关键值 (2).任意一个节点的左子树(如果存在的话)的关键值小于该节点的关键值 (3).任意一个节点的右子树(如果存在的话)的关键值大于该节点的关键值。现给定一组数据,请你对这组数据按给定顺序建立一棵排序二叉树,并输出其中序 遍历的结果。 输入...
声明:原创作品,转载时请注明文章来自SAP师太技术博客:www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将追究法律责任!原文链接:http://www.cnblogs.com/jiangzhengjun/p/4289792.html 由于程序太长,分成了几部分,后面附上源码。 1/** 2 * 平衡二叉搜索(排序)树3 * 4 * 平衡二叉搜索树双称为AVL树,它也是一棵二叉搜索树,是对二叉搜索树的一种改进,或都是具有下列性质的二叉树:它5 * 的左子树和右...
Given a binary tree, find all leaves and then remove those leaves. Then repeat the previous steps until the tree is empty. Example:
Given binary tree 1/ 2 3/ \ 4 5
Returns [4, 5, 3], [2], [1]. Explanation:
1. Remove the leaves [4, 5, 3] from the tree1/ 2
2. Remove the leaf [2] from the tree 1
3. Remove the leaf [1] from the tree [...
【114-Flatten Binary Tree to Linked List(二叉树转单链表)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题 Given a binary tree, flatten it to a linked list in-place. For example, Given 1/ 2 5/ \ 3 4 6 The flattened tree should look like: 1 2 3 4 5 6题目大意 给定一棵二叉树,将它转成单链表,使用原地算法。 解题思...
例子:中序遍历非递归算法 实现代码://中序遍历的非递归算法int InOrderTraverse_No_DiGui(BiTree T){BiTree p; //顶底指向二叉树中节点的游标InitStack(S); //初始化栈p = T; //p指向所给的二叉树根节点while(p || !StackEmpty(S)){if(p){ //若当前节点非空Push(S, p); //将当前节点入栈p = p->lchild; //游标指向当前节点的左孩子}else{Pop(S, q); //出栈,将栈顶节点返回到一个二叉树节点...
二叉树的深度:
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。思路:
1.非递归层序遍历
2.使用辅助队列,根结点先入队列
3. 循环判断队列是否为空,如果不为空就继续循环队列里面的每个结点
4. 循环队列时,当前当前结点出队列,把该结点的左右孩子入队列TreeDepth(tree)if !tree return 0array_push(queue,tree);depth=0while(!empty(queue)){++de...