最大搜尋二叉樹

2021-07-22 14:24:49 字數 955 閱讀 5210

本題考慮到用遞迴,即遞迴左子樹找到最大搜尋二叉樹的頭結點,遞迴右子樹找到最大搜尋二叉樹的頭結點,對於最大二叉搜尋子樹來說,我們要知道它的頭結點,最大的size(即搜尋二叉子樹的大小)、搜尋二叉子樹的最小值,最大值。等於說我們在處理子問題時必須知道這四個引數。我們函式僅返回頭結點,其餘三個引數用全域性陣列record來儲存。

**如下:

#include#includeusing namespace std;

struct node

}; node* posorder(node* head, int* record)

int value = head->value;

node* left = head->left;

node* right = head->right;

node* lbst = posorder(left, record);

int lsize = record[0];

int lmin = record[1];

int lmax = record[2];

node* rbst = posorder(right, record);

int rsize = record[0];

int rmin = record[1];

int rmax = record[2];

record[1] = min(lmin, value);

record[2] = max(rmax, value);

if (left == lbst && right == rbst && lmax < value && value < rmin)

record[0] = max(lsize, rsize);

return lsize > rsize ? lbst : rbst;

} node* biggestsubbst(node* head)

找到二叉樹中的最大搜尋二叉樹

題目 給定一顆二叉樹,已知其中所有節點的值都不一樣,找到含有節點最多的二叉搜尋樹,並返回頭節點。注 乙個二叉樹的子樹的葉節點必須是該二叉樹的葉節點。解答 1.後續遍歷 2.每次記錄下最小值,最大值,節總數。如果root左右節點符合,則總數相加後,返回此根節點 否則返回左右節點中節點數最多的節點。輸入...

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...