2013-07-08 3 views
-1

Позволяет определить двоичное дерево, которое будет называться «максимальное дерево» тогда и только тогда, когда данные текущего узла больше суммы левого корня и правого корня.Двоичное дерево, IsMaxTree

Пример:

Image

Не максимальное дерево:

Image

Нет вспомогательных функций, только рекурсии.

прототип:

int IsMaxTree(BitNode *root) 

ответ

2

Просто простой рекурсии, что вы можете решить эту проблему.

int IsMaxTree(BitNode *root) { 
    int left; 
    int right; 
    if (root == NULL) { 
     return 0; 
    } 
    left = IsMaxTree(root->left); 
    if (left == -1) { 
     return -1; 
    } 
    right = IsMaxTree(root->right); 
    if (right == -1) { 
     return -1; 
    } 
    if (root.val > left + right) { 
     return left + right + root.val; 
    } 
    else { 
     return -1; 
    } 
} 
+1

Лучше не поощрять такой вопрос, публикуя полное решение своей домашней работы. – interjay

+0

ОК, я больше не буду предлагать решение. – seanxiaoxiao

+0

Это неважно, я просто имел в виду (для будущих вопросов), что лучше направлять их к их решению, а не размещать полное решение. – interjay

Смежные вопросы