树的路径长度是从树根到每个结点的路径长度的总和。
问:为什么说在完全二叉树中,若一个结点没有左孩子,则它必然是叶结点?
答:在完全二叉树中,每个节点都按照从上到下、从左到右的顺序依次排列。由于完全二叉树是一种特殊的二叉树,所有的层级都是满的,除了最后一层可能不满。
假设一个结点没有左孩子,如果该结点还有右孩子,则根据完全二叉树的排列规则,右孩子会排在左孩子的后面。但是因为该结点没有左孩子,所以右孩子也不存在,即该结点没有任何孩子。在这种情况下,我们可以得出结论:一个结点没有左孩子的话,它必然没有右孩子。所以,该结点既没有左孩子,也没有右孩子,那么它就是叶结点。
因此,在完全二叉树中,如果一个结点没有左孩子,那么它必然是叶结点。
问:二叉链是什么?
答:二叉链(Binary Linked List)是一种用链表实现的二叉树数据结构。
与数组相比,链表用指针连接各个元素,更加灵活。在二叉链中,每个节点由三个部分组成:数据元素(或称为值或关键字)、左孩子节点的指针、右孩子节点的指针。
左孩子节点的指针存储了当前节点的左子树根节点的地址,右孩子节点的指针存储了当前节点的右子树根节点的地址。如果某个孩子节点不存在,则对应指针存储的值为空。
通过使用链表的方式实现二叉树的结构,可以有效地表示和操作二叉树。对于每个节点,我们可以通过节点之间的指针关系方便地访问和操作其值、左子树和右子树。
问:一棵有n个结点的二叉树采用二叉链存储结点,其中空指针数为(n+1)。
答:非空指针数=总分支数=n-1,空指针数=2×结点总数-非空指针数=n+1。(重要结论
题:后序遍历可以找到m到n的路径
答:因为先序、中序都会在根及左子全部压入后,弹出,所有处在根左子树上的某个右子结点,就会先弹出他的左兄弟,父结点,然后将其压栈。
因此,双亲出栈后才会压入右节点,故不可能找到右节点到根的路径。