二叉搜尋樹的2層結點統計
題目大意
主要思路
由於二叉搜尋樹是左子樹上所有結點的值均小於或等於它的根結點的值,右子樹上所有結點的值均大於它的根結點的值,所以我們每插入一個點就要從根節點dfs找到能存放該點的地方,也就是說如果這個值大於根節點就要往右找,小於等於根節點就要往左找,遞迴此過程,這樣建樹並且更新最大深度
AC程式碼
程式碼通俗易懂
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <string>
#include <cmath>
#include <queue>
#include <vector>
#include <map>
#include <sstream>
using namespace std;
const int N = 1010, INF = 0x3f3f3f3f;
int n, l[N], r[N], pos[N];
int cnt[N], max_depth;
void dfs(int root, int u, int depth)
{
if(pos[u] <= pos[root])
{
if(l[root] == INF)
{
l[root] = u;
cnt[depth+1]++;
max_depth = max(max_depth, depth+1);
return ;
}
else
{
dfs(l[root], u, depth + 1);
return ;
}
}
else
{
if(r[root] == INF)
{
r[root] = u;
cnt[depth + 1]++;
max_depth = max(max_depth, depth + 1);
return ;
}
else
{
dfs(r[root], u, depth + 1);
return ;
}
}
}
int main(void)
{
memset(l, 0x3f, sizeof(l));
memset(r, 0x3f, sizeof(r));
cin >> n;
if(n == 1)
{
cout << 1 << endl;
return 0;
}
for(int i = 0; i < n; i++)
{
int x;
cin >> x;
if(!i)
{
pos[i] = x;
}
else
{
pos[i] = x;
dfs(0, i, 0);
}
}
cout << cnt[max_depth] + cnt[max_depth - 1] << endl;
return 0;
}
相關文章
- 二叉搜尋樹的第 k 個結點
- 二叉搜尋樹的結構
- Leetcode 700. 二叉搜尋樹中的搜尋(DAY 2)LeetCode
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 資料結構-二叉搜尋樹資料結構
- 【資料結構】二叉搜尋樹!!!資料結構
- 二叉搜尋樹
- 二叉搜尋樹如何刪除節點
- 資料結構☞二叉搜尋樹BST資料結構
- 資料結構之「二叉搜尋樹」資料結構
- 資料結構-二叉搜尋樹的實現資料結構
- 二叉搜尋樹的操作集
- Day20 | 654.最大二叉樹 、 617.合併二叉樹 、 700.二叉搜尋樹中的搜尋 98.驗證二叉搜尋樹二叉樹
- 二叉搜尋樹和二叉樹的最近公共祖先二叉樹
- 從二分搜尋到二叉搜尋樹
- MySQL多層級結構-樹搜尋介紹MySql
- 783. 二叉搜尋樹節點最小距離
- 【資料結構】【二叉樹】四、二叉搜尋樹的特性(不斷補充)資料結構二叉樹
- 96. 不同的二叉搜尋樹
- 二叉搜尋樹的python實現Python
- L2-004 這是二叉搜尋樹嗎?
- 程式碼隨想錄 第20天 20的總結沒看 | 654.最大二叉樹 ● 617.合併二叉樹 ● 700.二叉搜尋樹中的搜尋 ● 98.驗證二叉搜尋樹二叉樹
- Leetcode 938. 二叉搜尋樹的範圍和(DAY 2)LeetCode
- leetcode 700. 二叉搜尋樹中的搜尋 思考分析LeetCode
- 程式碼隨想錄day18 || 530 二叉搜尋樹最小差,501 二叉搜尋樹眾數,236 二叉搜尋樹最近公共祖先
- 有序表和搜尋二叉樹二叉樹
- javascript實現二叉搜尋樹JavaScript
- js實現完全排序二叉樹、二叉搜尋樹JS排序二叉樹
- 程式碼隨想錄演算法訓練營第22天 |二叉樹part07:235. 二叉搜尋樹的最近公共祖先、701.二叉搜尋樹中的插入操作、450.刪除二叉搜尋樹中的節點演算法二叉樹
- [Python手撕]不同的二叉搜尋樹Python
- LeetCode-096-不同的二叉搜尋樹LeetCode
- 資料結構之二叉搜尋樹—Java實現資料結構Java
- LeetCode 109——有序連結串列轉化二叉搜尋樹LeetCode
- Java中在二叉搜尋樹中查詢節點的父節點Java
- 每日一練(26):二叉搜尋樹的第k大節點
- 演算法與資料結構——AVL樹(平衡二叉搜尋樹)演算法資料結構
- 程式碼隨想錄 第23天 | 669. 修剪二叉搜尋樹 ● 108.將有序陣列轉換為二叉搜尋樹 ● 538.把二叉搜尋樹轉換為累加樹 ● 總結篇陣列
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹