-判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
2017-07-27 20:51
417 查看
判断一棵二叉树是否是平衡二叉树
任意给定一棵二叉树,判断它是否是平衡二叉树。所谓平衡二叉树,是指二叉树中任意一个结点的左右子树的高度之差不超过1可以分两步实现。第一步先实现求解 二叉树中每个结点的高度的函数height(BinaryNode );然后先序遍历二叉树中的每一个结点node,调用height()求出该结点的左子树高度height(node.left) 和 右子树高度 height(node.right)。根据左右子树的高度判断是否为平衡二叉树。
int HeightOfBinatyTree(BinaryTreeNode* pRoot) //求二叉树的高度 { if (pRoot == NULL) return 0; int m = HeightOfBinatyTree(pRoot->_pLeft); int n = HeightOfBinatyTree(pRoot->_pRight); return (m>n)? (m+1):(n+1); } bool IsBalanceTree(BinaryTreeNode* pRoot) //判断二叉树是否是平衡二叉树 { if (!pRoot) return true; int left_height = HeightOfBinatyTree(pRoot->_pLeft); int right_height = HeightOfBinatyTree(pRoot->_pRight); if(abs(left_height - right_height) > 1) return false; else return IsBalanceTree(pRoot->_pLeft) && IsBalanceTree(pRoot->_pRight); }
求二叉树的镜像
void MirrorTree(BinaryTreeNode* pRoot) { if(pRoot == NULL) return ; if(pRoot->_pLeft == NULL && pRoot->_pRight == NULL) //该结点是叶子结点 return ; BinaryTreeNode *pTemp = pRoot->_pLeft; //交换左右孩子 pRoot->_pLeft = pRoot->_pRight; pRoot->_pRight = pTemp; if (pRoot->_pLeft) MirrorTree(pRoot->_pLeft); if (pRoot->_pRight) MirrorTree(pRoot->_pRight); }
相关文章推荐
- 每日一题之判断一棵二叉树是否是平衡二叉树以及求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树/求一颗二叉树的镜像
- 判断一棵二叉树是否是平衡二叉树并求一颗二叉树的镜像——题集十
- 二叉树--判断一棵二叉树是否是平衡二叉树&&求一颗二叉树的镜像
- 【二叉树】判断一棵二叉树是否是平衡二叉树/求一棵二叉树的镜像/对称的二叉树
- 剑指Offer--039-平衡二叉树(判断一棵二叉树是否是平衡二叉树)[扩展附加题]
- 【算法】判断一颗二叉树是否是平衡二叉树
- 判断一个节点是否在一棵二叉树中和判断一颗二叉树是否是另一颗树的子树——题集(十二)
- 【判断一个节点是否在一棵二叉树中】/【判断一颗二叉树是是否是另一颗树的子树】
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 判断一颗二叉树是否为平衡二叉树
- 数据结构之如何判断一棵二叉树是否是平衡二叉树(AVL树)
- java数据结构-二叉树-判断一颗二叉树是否为平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- 数据结构面试题/判断一棵二叉树是否是平衡二叉树
- 输入一棵二叉树,判断该二叉树是否是平衡二叉树。
- leetcode_110. Balanced Binary Tree 判断一棵二叉树是否为平衡二叉树