高级数据结构
zhangyin_blog
这个作者很懒,什么都没留下…
展开
-
二叉搜索(排序)树-----BSTree树
/*BST树:二叉排序树 二叉搜索树BST树的结构typedef int ElemType ;typedef struct BstNode{ BstNode* leftchild;//左节点 BstNode* rightchild;//右节点 BstNode* parent;//父亲节点 ElemType data;//数据域}BstNode,*BSTr...原创 2018-08-15 18:08:23 · 1184 阅读 · 0 评论 -
简单二叉树
二叉树的基本结构typedef char KeyType;#define END '#'typedef struct BtNode{ BtNode* leftchild; BtNode* rightchild; KeyType key;}BtNode,*BinaryTree;二叉树的建立//购买节点BtNode* BuyNode(){ BtNode* s = ...原创 2018-08-23 17:42:03 · 415 阅读 · 0 评论 -
二叉树简单操作
(一)求二叉树的深度如果一棵树只有一个结点,那么它的深度为1;如果根结点只有左子树没有右子树,那么树的深度是左子树的深度加1,加1是加上根节点这一层如果既有左子树又有右子树,那么树的深度应该是左、右子树中深度较大的值再加1递归代码int Depth1(BtNode* ptr){ if(ptr == NULL) return 0; int nleft = Depth1(p...原创 2018-08-23 22:12:31 · 166 阅读 · 0 评论 -
二叉树的镜像
纠正一下上图中的描述 只要当前节点有孩子就交换 也包括只有一个孩子的情况递归代码 void MirrTree(BtNode* ptr) { // 树空 指向树的根节点为空 if(ptr == NULL) return ; //只有根 不需要交换 if(ptr->leftchild == NULL && ptr-&...原创 2018-08-24 20:51:29 · 125 阅读 · 0 评论 -
二叉树常见面试题
(一)求二叉树和为某一值的路径//二叉树中和为某一值的路径44void findpath(BstNode* ptr,int sum,int& cur,vector<BstNode*> &vec){ cur += ptr->data; vec.push_back(ptr); //如果当前节点为叶子节点并且cur == sum 满足要求 打印v...原创 2018-08-25 15:49:54 · 1248 阅读 · 0 评论 -
判断完全二叉树和满二叉树
(一)判断完全二叉树特点一:只允许最后一层有空缺结点且空缺在右边,即叶子结点只能在层次最大的两层上出现; 特点二:对任一结点,如果其右子树的深度为j,则其左子树的深度必为j或j+1 即度为1的点只有1个或0个 解题思路:首先一棵空树是完全二叉树利用队列 先将根节点入队 只要当前节点不为NULL 先从队列front()得到一个节点 并将吹对节点的左右孩子入队 如果存在只有一...原创 2018-08-25 16:28:50 · 9169 阅读 · 4 评论