Tree Əvvəlki#10147

Tree Əvvəlki

1 saniyə
128 meqabayt
Asan

Verilmiş ikili axtarış ağacında və verilmiş bir zirvənin ünvanı üçün, həmin zirvənin in-order (orta gediş) üzrə əvvəlki elementini (in-order sələfini) tapın.

Ağacın tərifi

// 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 funksiyasını yazın, hansı ki, verilmiş zirvənin ikili axtarış ağacında in-order üzrə əvvəlki elementinə işarəçi qaytarsın (sələfi). Əgər əvvəlki element mövcud deyilsə, NULL qaytarsın.

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

Nümunə

prb10147.gif

Əgər Prev funksiyası tree ünvanı ilə 12 dəyəri olan zirvəyə çağırılarsa, funksiya 9 dəyəri olan zirvəyə işarəçi qaytarır.