二叉搜索樹

搜索樹支持很多動態(tài)集合操作襟锐,包括尋找谎僻,最小項娄柳,最大項等等一系列操作。所以可以使用搜索樹當(dāng)作字典或者優(yōu)先隊列艘绍。

二叉搜索樹是以一棵二叉樹來組織的赤拒。在二叉搜索樹中任意一個節(jié)點(diǎn)x來說,其左子樹中的關(guān)鍵字最大不大于x.key,其右子樹中的關(guān)鍵字最小不小于x.key挎挖。大部分搜索樹操作的最壞運(yùn)行時間與樹的高度成正比这敬。

中序遍歷

public void inorder(TreeNode node){
  while(node!=null){
    inorder(node.left);
    System.out.println(node.key);
    inorder(node.right);
  }
}

得出定理:遍歷一棵n個結(jié)點(diǎn)子樹的根,調(diào)用INORDER-TREE-WALK(x)需要O(n)的時間蕉朵。

找出二叉樹中的關(guān)鍵字K

public TreeNode search(TreeNode node, int key){
  while(node!=null&&node.key!=key){
    if(key<node.key)
      node = node.left;
    else
      node = node.right;
  }
  return node;
}

二叉搜索樹中的最小元素

public TreeNode getMin(TreeNode node){
  while(node.left!=null){
      node = node.left;
  }
   return node;
 }

二叉搜索樹中的最大元素

public TreeNode getMax(TreeNode node){
  while(node.right!=null)
    node = node.right;
  return node;
 }

二叉樹的插入元素

public void insert(TreeNode root,int key){
  if(root==null)
    return;
  TreeNode parent;
  while(root!=null){
    parent = root;
    if(key<root.key)
      root = root.left;
    else if(key>root.key)
      root = root.right;
    else
      return;  
  }
  if(key<parent.key)
    parent.left = new TreeNode(key);
  else if(key > parent.key)
    parent.right = new TreeNode(key);
}

二叉樹的插入就是遍歷二叉樹找到合適的點(diǎn)崔涂。然后處理該點(diǎn)與二叉樹的關(guān)系。

二叉搜索樹刪除元素

二叉搜索樹刪除元素時需要考慮幾種情況:

  1. 要刪除的節(jié)點(diǎn)只有左節(jié)點(diǎn)或者只有右節(jié)點(diǎn)始衅,直接把節(jié)點(diǎn)替換到它的位置
  2. 沒有子節(jié)點(diǎn)冷蚂,直接刪除
  3. 有左節(jié)點(diǎn)和右節(jié)點(diǎn)。這種情況比較復(fù)雜觅闽,把
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末帝雇,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子蛉拙,更是在濱河造成了極大的恐慌尸闸,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孕锄,死亡現(xiàn)場離奇詭異吮廉,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)畸肆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門宦芦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人轴脐,你說我怎么就攤上這事调卑。” “怎么了大咱?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵恬涧,是天一觀的道長。 經(jīng)常有香客問我碴巾,道長溯捆,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任厦瓢,我火速辦了婚禮提揍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘煮仇。我一直安慰自己劳跃,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布浙垫。 她就那樣靜靜地躺著刨仑,像睡著了一般强重。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贸人,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天间景,我揣著相機(jī)與錄音,去河邊找鬼艺智。 笑死倘要,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的十拣。 我是一名探鬼主播封拧,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼夭问!你這毒婦竟也來了泽西?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤缰趋,失蹤者是張志新(化名)和其女友劉穎捧杉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秘血,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡味抖,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了灰粮。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片仔涩。...
    茶點(diǎn)故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖粘舟,靈堂內(nèi)的尸體忽然破棺而出熔脂,到底是詐尸還是另有隱情,我是刑警寧澤柑肴,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布霞揉,位于F島的核電站,受9級特大地震影響嘉抒,放射性物質(zhì)發(fā)生泄漏零聚。R本人自食惡果不足惜袍暴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一些侍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧政模,春花似錦岗宣、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春刊咳,著一層夾襖步出監(jiān)牢的瞬間彪见,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工娱挨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留余指,地道東北人。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓跷坝,卻偏偏與公主長得像酵镜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子柴钻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 1 概述 二叉搜索樹淮韭,顧名思義,其主要目的用于搜索贴届,它是二叉樹結(jié)構(gòu)中最基本的一種數(shù)據(jù)結(jié)構(gòu)靠粪,是后續(xù)理解B樹、B+樹毫蚓、...
    CodingTech閱讀 3,125評論 5 35
  • 在計算機(jī)科學(xué)中庇配,二叉搜索樹(Binary Search Tree)(有時稱為有序或排序的二叉樹)是一種能存...
    Leon_Geo閱讀 2,876評論 0 3
  • 1、前言 二叉樹是非常重要的一種數(shù)據(jù)結(jié)構(gòu)绍些,二叉搜索樹是其中的一種類型捞慌,其任意節(jié)點(diǎn)x,左子樹中的關(guān)鍵字最大不超過x....
    某昆閱讀 616評論 0 4
  • 提示:本篇的原文已經(jīng)在github上有所更新柬批,想看最新版的朋友們抱歉了... 二叉查找樹(英語:Binary Se...
  • 我家寶寶3歲周8個月啸澡,上幼兒園老坐不住,尤其是文化課氮帐,總在地上跑嗅虏,耍賴還在地上躺著,有寶媽知道這是什么問題嗎上沐,給我...
    心緣育兒閱讀 1,267評論 10 16