题目:用log(n)算法 找完全二叉树最底层最右边的结点
一颗二叉树的总结点其实是知道的,设为N。
如上图,总共有15个结点,那么找15号结点只需从根结点开始,向右--向右--向右。
假设只有14个点,那么向右--向右--向左
假设只有13个结点,那么向右---向左---向右
……
……
可以找到规律,总结点数即为最后一个结点,也就是我们要找的结点。把此结点一直除以2,记录其余数。之后根据余数来找。
例如15号结点,一直除以2,余数分别为(15%2)1、(7%2)1、(3%2)1
例如14号结点,一直除以2,余数分别为(14%2)0、(7%2)1、(3%2)1
…………
把这些余数逆序,从根结点开始找,如果是1,则向右,如果是0则向左。
这样算法时间复杂度为log(n)。