leetcode_树_相关内容
来源:互联网 发布:多益网络 m.duoyi.com 编辑:程序博客网 时间:2024/05/21 21:39
1.leetcode种对于树的定义如下:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */
1. 110-balanced binary tree
传送门:https://leetcode.com/problems/balanced-binary-tree/
用的是分治的思想,自己之前一直在纠结的问题是对judge函数的返回值,如果abs已经不满足返回-1的话,那么如何能跳出整个递归出来。
最后解决办法是在判断条件中加入hl==-1 || hr==-1,这样只要有一个-1产生,那么所有的返回值都会变成-1。
int类型函数如果是空的话,返回的还是0.但尽量不依赖编译器的定义。
AC代码:
class Solution {public:int judge(TreeNode* root){if(root){int hl=judge(root->left);int hr=judge(root->right); if(abs(hl-hr)>1 || hl==-1 || hr==-1) return -1;int height=hl>hr?hl:hr;return height+1;}return 0;} bool isBalanced(TreeNode *root) { if(judge(root)==-1) return false; return true; }};
传送门:
思路:
自己一开始也想到了用堆栈,但是想到的是用中序遍历,找出所有的值之后再排序查找。
所以先附自己TLE的代码:
class BSTIterator {public:stack<int> s;int a[100]={0};int i=0,j;int target; BSTIterator(TreeNode *root) { if(root==NULL) target=-1; else target=root->val; test(root); while(!s.empty()) { a[i++]=s.top(); s.pop(); } } void test(TreeNode* root) { while(root) { test(root->left); s.push(root->val); test(root->right); } } /** @return whether we have a next smallest number */ bool hasNext() { sort(a,a+i); for(j=0;j<i;j++) { if(a[j]==target && j>0) return true; } return false; } /** @return the next smallest number */ int next() { return a[j-1]; }};
如果再注意条件的话,只有堆栈/链表才能满足对空间的要求。数组是不能考虑的。
0 0
- leetcode_树_相关内容
- leetcode_数组_相关内容2(
- leetcode_数组_相关内容_1(48-66-88-118-119)
- leetCode_字典树
- leetcode_题解_Merge Sorted Array _简单题
- leetcode_链表转成二叉搜索树
- leetCode_线段树、单点更新、区间求和
- 相关内容
- leetcode_效率题解_[python/C++]_147. Insertion Sort List(链表插入排序)
- 黑马程序员_Java基础_平台搭建相关内容
- leetcode_效率题解_[python/C++]_21. Merge Two Sorted Lists(合并2个有序链表)
- 二叉树------二叉查找树的相关内容
- LeetCode_将LeetCode中的字符串用例转换成二叉树
- leetcode_解题_reorder list
- leetcode_动态规划
- leetcode_题解_Surrounded Regions
- leetcode_题解_Clone Graph
- leetcode_题解_min stack
- my.cnf解决中文乱码
- 【ThinkingInJava】17、匿名类的工厂方法
- 出现错误ActivityManager: Warning: Activity not started, its current task has been
- play 的action映射页面
- 工程师的自我修养
- leetcode_树_相关内容
- Qt事件触发与处理
- 机房收费系统数据库小助手——Sqlhelper
- iOS App 跳转到本App相关设置页面
- CD,决策树
- cornerHarris源码详细分析
- play 导入eclipse如何调试
- CB,朴素贝叶斯和贝叶斯信念网络
- 北大ACM1064——Cable master