
BinaryTree
onyas
这个作者很懒,什么都没留下…
展开
-
分层遍历二叉树(按层次从上往下,从左往右)
//分层遍历二叉树(按层次从上往下,从左往右)//以广度优先搜索(breath-first search, BFS)去遍历一个树结构.使用队列实现//队列初始化,将根节点压入队列。当队列不为空,进行如下操作://弹出一个节点,访问,若左子节点或右子节点不为空,将其压入队列。void printNodeByLevel(BinaryTree* pRoot){ //在一行内打印出 if(p原创 2013-05-08 16:31:22 · 2322 阅读 · 0 评论 -
打印二叉树第K层的所有结点
//打印二叉树第K层的所有结点//根结点为第0层void printNodeOfKthLevel(BinaryTree* pRoot,int k){ if(pRoot==NULL || k<0) return ; if(k==0) coutvalue<<" "; printNodeOfKthLevel(pRoot->left,k-1); printNodeOfKthLevel原创 2013-05-08 16:32:14 · 4015 阅读 · 0 评论 -
求二叉树中叶子节点个数,总的节点个数,第K层的节点个数
struct BinaryTree{ char value; BinaryTree* left; BinaryTree* right;};//求二叉树中的节点个数//(1)如果二叉树为空,节点个数为0//(2)如果二叉树不为空,二叉树节点个数 = 左子树节点个数 + 右子树节点个数 + 1int getNodeNums(BinaryTree* pRoot){ if(pRoo原创 2013-05-08 16:24:50 · 4231 阅读 · 0 评论 -
求二叉树的深度
//(1)如果二叉树为空,二叉树的深度为0//(2)如果二叉树不为空,二叉树的深度 = max(左子树深度, 右子树深度) + 1int getDepth(BinaryTree* pRoot){ if(pRoot==NULL) return 0; int leftDepth = getDepth(pRoot->left); int rightDepth = getDepth(pRo原创 2013-05-08 16:30:05 · 2085 阅读 · 0 评论 -
判断两棵二叉树是否结构相同
//不考虑数据内容。结构相同意味着对应的左子树和对应的右子树都结构相同。//递归解法://(1)如果两棵二叉树都为空,返回真//(2)如果两棵二叉树一棵为空,另一棵不为空,返回假//(3)如果两棵二叉树都不为空,如果对应的左子树和右子树都同构返回真,其他返回假bool isSameStructure(BinaryTree* pRoot1,BinaryTree* pRoot2){ if原创 2013-05-09 23:29:26 · 2685 阅读 · 0 评论