二叉树高度公式:面试官最爱考的"送命题"
刷LeetCode的朋友肯定被这道题坑过:给你一个满二叉树,求高度到底是log₂(n+1)还是⌊log₂n⌋+1?网上答案五花八门,连大厂面经都能吵几十楼。其实真相很简单——取决于你怎么定义"高度"! 这里有个行业潜规则:国内教材默认从1开始数(根节点算第1层),这时候满二叉树高度就是⌊log₂n⌋+1。但国外很多课程从0开始数(根节点算第0层),公式就变成了⌈log₂(n+1)⌉-1。所以下次面试被问到,先问清楚面试官的计数习惯,能加印象分!
那实际写代码时选哪种?我的建议是:看场景。如果是做索引结构(比如B+树),用从1开始的公式更直观;如果是算时间复杂度,从0开始更方便推导。有个小技巧:不管选哪种,代码里写清楚注释,别让同事拿着两种公式来问你bug在哪。
说到底,公式只是工具,理解背后的递归思想才是关键。毕竟面试时把推导过程讲清楚,比背对答案更能打动面试官。你学废了吗?
你认同吗?
标签:
二叉树的高度公式