Tree Попередній#10147

Tree Попередній

1 секунда
128 мегабайтів
Легка

Дано бінарне дерево пошуку і посилання на вузол. Знайдіть попередній елемент у серединному (in-order) обході дерева (in-order попередник для даного вузла).

Опис дерева

// Java
class TreeNode
{
public:
  int val;
  TreeNode left, right, parent;
  TreeNode(int x, TreeNode prev) {
    val = x;
    left = NULL; 
    right = NULL;
    parent = prev;
  }
};
// C++
class TreeNode
{
public:
  int val;
  TreeNode *left, *right, *parent;
  TreeNode(int x, TreeNode *prev = NULL) : val(x), left(NULL), right(NULL), parent(prev) {}
};

Реалізуйте функцію Prev, яка повертає вказівник на попередній елемент у дереві (in-order попередник). Якщо попередній елемент не існує, поверніть NULL.

// Java
TreeNode Prev(TreeNode tree)
// C++
TreeNode* Prev(TreeNode *tree)

Приклад

prb10147.gif

Якщо функцію Prev викликають для вузла tree зі значенням 12, вона повертає вказівник на вузол зі значенням 9.