前驱节点:二叉树中序遍历完成后和这个节点相邻的前面的节点为该节点的前驱节点
后继节点:二叉树中序遍历完成后和这个节点相邻的后面的节点为该节点的后继节点
中序遍历顺序:8->4->9->2->10->5->1->6->3->7
4号节点的前驱节点为8号节点,后继节点为9号节点。
正常的二叉树的数据结构:
struct node
{
node left;//左节点
node right;//右节点
int value;
};
本题中二叉树的数据结构:
struct node
{
node left;//左节点
node right;//右节点
node parent;//该节点的父亲节点
int value;
};
比普通的二叉树结构多了一个指向该节点父亲节点的指针,我们规定:头节点指向其父亲节点的指针为空或者是头节点本身
前驱节点
1:如果当前节点的左子树不为空,那么该点的前驱节点为该点左子树中最右的节点
假设求上图中1节点的前驱节点,1节点的左子树不为空,那么1节点的前驱节点为左子树中最右的节点--5节点
2:如果当前节点的左子树为空,那么该点的前驱节