数据结构 Tricks(一)—— 父节点和左右孩子索引号之间的关系

如果以第 0 个位置开始标记树根节点,则第 i 个结点的左右孩子分别为:

  • 2i+1
  • 2i+2

反之,如果一个结点的标号为 i,则其父节点为:

  • i/2:i 为左孩子结点;
  • i/2-1:i 为右孩子结点;

这是传统常规的做法,可是当我们换个方式存储这些根上的结点的话,比如,根节点在索引为 1,而不是为 0 的地方,这样 结点 i 的左右孩子分别为:

  • 2*i
  • 2*i+1

这种方式的真正好处在于:当结点为 i 时,不论为左还是右孩子结点,其父节点总是,i/2;

原文地址:https://www.cnblogs.com/mtcnn/p/9423576.html