演算法學習 求最大二查搜尋子樹

2021-07-25 14:29:51 字數 1194 閱讀 5048

題目:

給定某二叉樹,計算它的最大二查搜尋子樹。返回該最大二查搜尋子樹的根節點。

如下圖的二叉樹,返回81.

題目解析:

若某節點的左右子樹都是二查搜尋樹,且能夠計算該節點左子樹的最大值max和右子樹的最小值min,記該節點的值為value

若value>max且value

// suanfaxuexi.cpp : 定義控制台應用程式的入口點。

//#include "stdafx.h"

#include #include typedef struct tagstreenode

}streenode;

typedef void (*visit)(streenode* value); // 定義乙個

class cbinarytree

; int cbinarytree::largestbst(streenode*& pnode) const

bool cbinarytree::_largestbst(streenode* proot, int& nmin, int& nmax, int& count, int& nnumber, streenode*& pnode) const

return true;

}void printvalue(streenode* pnode)

void changvalue(streenode* pnode)

int _tmain(int argc, _tchar* argv)

{ cbinarytree tree;

for (int i = 0; i < 10; i++)

tree.insert(rand() % 100);

tree.inorder(changvalue);

tree.inorder(printvalue);

tree.preorder(printvalue);

streenode* pnode;

int nlargestnumber = tree.largestbst(pnode);

std::cout

最大二叉搜尋子樹

有一棵二叉樹,其中所有節點的值都不一樣,找到含有節點最多 的搜尋二叉子樹,並返回這棵子樹的頭節點.給定二叉樹的頭結點root,請返回所求的頭結點,若出現多個節點最多的子樹,返回頭結點權值最大的。struct treenode class maxsubtree if root null return ...

最大二叉搜尋子樹

有一棵二叉樹,其中所有節點的值都不一樣,找到含有節點最多 的搜尋二叉子樹,並返回這棵子樹的頭節點.1 2 struct treenode 9 10 class maxsubtree 1718 treenode max node subtree treenode root,int maxval,int...

二叉樹中最大搜尋子樹和最大搜尋子結構

輸入描述 第一行輸入兩個整數 n 和 root,n 表示二叉樹的總節點個數,root 表示二叉樹的根節點。以下 n 行每行三個整數 fa,lch,rch,表示 fa 的左兒子為 lch,右兒子為 rch。如果 lch 為 0 則表示 fa 沒有左兒子,rch同理 ps 節點的編號就是節點的值。輸入 ...