日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

二叉搜索树相关知识及应用操作

發布時間:2023/12/13 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 二叉搜索树相关知识及应用操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 概念
  • 查找二叉搜索樹的第k大節點


概念

二叉查找樹(Binary Search Tree),(又名:二叉搜索樹,二叉排序樹)——它或者是一棵空樹,或者是具有下列性質的二叉樹:

  • 若它的左子樹不空,則左子樹上所有結點的值均小于它的根結點的值;
  • 若它的右子樹不空,則右子樹上所有結點的值均大于它的根結點的值;
  • 它的左、右子樹也分別為二叉排序樹。
  • 二叉搜索樹作為一種經典的數據結構,它既有鏈表的快速插入與刪除操作的特點,又有數組快速查找的優勢;所以應用十分廣泛,例如在文件系統和數據庫系統一般會采用這種數據結構進行高效率的排序與檢索操作。

    查找二叉搜索樹的第k大節點


    二叉搜索樹如上,如果我們想要返回其中第K大的節點,應該怎么做呢?

    首先要知道一個性質:二叉搜索樹的中序遍歷為 遞增序列 。

    給出的二叉搜索樹中序遍歷結果為:

    1, 2, 3, 4, 5, 6

    因此,想要獲得第K大的節點,只要倒序進行中序遍歷(左根右的順序變為右根左),即可得到降序排列的二叉搜索樹節點序列,序列中第K個元素即為我們所求。

    代碼實現:

    /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution {int res, k;void midsearch(TreeNode* root){if(root==nullptr) return;midsearch(root->right);if(k==0) return;if(--k==0) res = root->val;midsearch(root->left);} public:int kthLargest(TreeNode* root, int k) {this->k = k;midsearch(root);return res;} };

    總結

    以上是生活随笔為你收集整理的二叉搜索树相关知识及应用操作的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。