各种树的题目
来源:互联网 发布:大数据可视化展示系统 编辑:程序博客网 时间:2024/05/17 21:55
1.判断二叉树是否平衡
解法1:
int treeDepth(Node *root){if(root == NULL)return 0;int ld = treeDepth(root->left);int rd = treeDepth(root->right);return ld > rd ? ld + 1 : rd + 1;}bool isBalanced(Node *root){if(root == NULL)return true;int leftDepth = treeDepth(root->left);int rightDepth = treeDepth(root->right);if(abs(leftDepth - rightDepth) > 1)return false;else return isBalanced(root->left) && isBalanced(root->right);}
解法2:
bool isBalancedCore(Node *root, int *depth);bool isBalanced(Node *root){int depth = 0;return isBalancedCore(root, &depth);}bool isBalancedCore(Node *root, int *depth){if(root == NULL){*depth = 0;return true;}int left, right;if(isBalancedCore(root->left, &left) && isBalancedCore(root->right, &right)){int diff = left - right;if(diff <= 1 && diff >= -1){*depth = 1 + (left > right ? left : right);return true;}}return false;}
2.判断二叉树是否完全二叉树
采用层序遍历
bool isCompleteTree(Node *root){queue<Node*> q;q.push(root);while(q.front() != NULL){Node *ptr = q.front();q.pop();q.push(ptr->left);q.push(ptr->right);}while(!q.empty()){if(q.front() != NULL)return false;q.pop();}return true;}
3..判断二叉树是否二叉排序树
bool isBST(Node *root){if(root == NULL)return true;queue<Node*> q;q.push(root);while(!q.empty()){Node *ptr = q.front();q.pop();if(ptr->left){if(ptr->data < ptr->left->data)return false;else q.push(ptr->left);}if(p->right){if(p->data > p->right->data)return false;elseq.push(ptr->right);}}return true;}
0 0
- 各种树的题目
- 各种待AC,待理解的题目
- 线性表的各种题目,操作。
- 各种排序相关题目的实现
- 链表的各种题目整理
- 收录各种猥琐的Java笔试/面试题目
- 收录各种猥琐的Java笔试/面试题目
- 收录各种猥琐的Java笔试/面试题目
- 作各种猥琐的Java笔试/面试题目
- 收录各种猥琐的Java笔试/面试题目
- 收录各种猥琐的Java笔试/面试题目
- 链表的各种题目整理(C语言实现)
- 收录各种猥琐的Java笔试/面试题目
- 链表的各种题目整理(C语言实现)
- 记录一下个人因为各种原因搁置研究的题目
- 题目1088:剩下的树 题目13
- 各种智力面试题目汇总
- leetcode -- 各种类型题目分类
- FPM CPU很高
- Object类、JAVA的异常处理机制
- pat 1040. Longest Symmetric String (25)
- Table 9-1 -- Bit strings with "prefix" and "suffix" bits and assigment to codeNum rangs
- git学习笔记-4 暂存区的概念(1)-提交任务
- 各种树的题目
- 下载adt-bundle-linux-x86_64-20140702.zip 和 android sdk
- Java内存管理:深入Java内存区域
- 如何熟悉一个开源项目
- linux下vi命令大全
- SpringMVC ----数据进行类型转换
- 【数论】zoj3870
- HDU 5289 单调队列,multiset
- git学习笔记-5 git 暂存区(2)