二分搜尋樹

2021-09-24 16:44:09 字數 902 閱讀 1218

1.二分搜尋樹 binary search tree

性質:a. 二分搜尋樹是二叉樹

b.二分搜尋樹的每乙個節點的值:

大於其左子樹的所有節點的值

小於其右子樹的所有節點的值

c.每一顆子樹也是二分搜尋樹

e.儲存的元素必須具有可比較性(二分搜尋樹的乙個缺點)

2.二分搜尋樹的操作

a.二分搜尋樹新增新元素

我們的二分搜尋樹不包含重複元素,如果需要包含重複元素的話只需要定義:左子樹小於等於節點;或者右子樹大於等於節點既可以,我們之前實現的陣列和鍊錶是包含重複元素的;其實關於是否包含重複元素,主要要從實際的應用場景來看。

二分搜尋樹新增元素的非遞迴寫法,和鍊錶很像,由於遞迴實現比非遞迴實現要簡單,我們這裡使用遞迴實現二分搜尋樹

b.二分搜尋樹的遍歷(遍歷就是把所有節點都訪問一遍)

package com.kaola.bigdata;

//二分搜尋樹 不包含重複元素

public class bst>

}private node root;

private int size;

public bst()

public int size()

public boolean isempty()

public void add(e e)else

}// 向以node為根的二分搜尋樹中插入元素e,遞迴演算法

private void add(node node,e e)else if (e.compareto(node.e)>0 && node.rigth == null)

if (e.compareto(node.e)<0)else

add(node.rigth,e);

}}

二分搜尋樹

include include include include include using namespace std templateclass bst bst int size bool isempty 插入結點 void insert key key,value value 是否包含該鍵值的結...

二分搜尋樹

template class bst node root intcount public bst bst intsize bool isempty 插入新的節點 public void insert key key,value value private 向以node為根的二叉搜尋樹中,插入節點 k...

leetcode 二分搜尋樹

二分搜尋樹勢一顆典型的二叉樹,二分搜尋樹根節點的值大於左孩子節點的值,小於右孩子節點的值,插入 刪除 查詢的時間複雜度都是log n 建立,插入 思路 首先初始化第乙個節點,然後第二個節點要插入樹中需要找到要插入位置的根節點,有乙個查詢的過程,然後根據值的大小分別放在左右子樹 param a par...