这是facebook的面试题
实现包含以下特殊字符的正则表达匹配
“.” 匹配任意一个字符
“*” 匹配任意多个前面的字符
例如给定正则表达“ra.”和字符串“ray”你的函数应该返回true,但是仍用这个正则匹配另一个字符串“raymond”应当返回false
给定正则表达“.*at”和字符串“chat”应当返回true,和字符串“chats”应当返回false
【上期答案】
他给的附加说明很重要,可以使用父节点的指针,所以当你做锁住和解锁操作的时候可以通知到父亲级别甚至更高,我们就要在这个通知上做文章
使用一个变量,记录被锁住孩子的个数
is_locked只是返回节点的属性而已,重点在lock方法
unlock方法刚好相反,通知所有上层减1
最后做了一个方便测试的静态方法,从对象构造一个带有反向指针的树,接下来是构造测试了
我们主要有以下几点要测试
1。孩子没有被锁住的,可以lock/unlock
2。孩子有被锁住的,不可以lock/unlock
3。左子树锁住,不影响右子树lock/unlock
4。父亲被锁住,不影响孩子lock/unlock