題意:給一棵n個節點的樹,要求每個節點有對應的顏色,顏色上法:根節點和其所有子節點為同一顏色,求需要上顏色最少次數
思路:用dfs對所有子節點遍歷,遍歷之前先將子節點顏色塗成與當前相同顏色,如果當前顏色與對應顏色不同則塗色,並增加運算元,需要用vis陣列判斷子節點重複問題
#includeusing namespace std;
int n, c[10005], nowc[10005], vis[10005];
vectorchild[10005];
int dfs(int cur)
for (int i = 0; i < child[cur].size(); i++)
} return k;
}int main()
for (int i = 1; i <= n; i++)
cout << dfs(1) << endl;
} return 0;
}
二叉平衡樹 2
二叉平衡樹是一種對於二叉搜尋樹最壞情況的優化。我們都知道,對於一棵樹,倘若它退化了,退化成一條鏈,那麼從頭到尾的搜尋時間就要突破乙個量級了,因為對於每一次詢問,這顆非滿二叉樹只能提供一種路徑。對於時間複雜度,設 平均選擇數 為x,則有時間複雜度為o log x n 如果是一顆滿二叉樹,那麼無疑是極快...
二叉搜尋樹2
include using namespace std struct node void insertt node tree,int value 注意要加 取位址符 才能每次更新tree 否則不能實現對tree的改變 相當 於swap交換兩個值,不加取位址只能相當於乙個函式,裡邊的tree不會 時時...
二叉搜尋樹2
1.判斷bst的合法性 這裡是有坑的,如果很簡單的認為只需要節點與左子樹和右子樹進行比較的話,那麼 就是 boolean isvalidbst treenode root 但是這個演算法出現了錯誤,bst 的每個節點應該要小於右邊子樹的所有節點,下面這個二叉樹顯然不是 bst,因為節點 10 的右子...