最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹(shù)

 更新時(shí)間:2022年01月11日 08:05:45   作者:zhouzhouandliuliu  
這篇文章主要為大家詳細(xì)介紹了java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹(shù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了java數(shù)據(jù)結(jié)構(gòu)之搜索二叉樹(shù)的具體代碼,供大家參考,具體內(nèi)容如下

搜索二叉樹(shù)的定義是:在一個(gè)二叉樹(shù)上,左節(jié)點(diǎn)一定比父節(jié)點(diǎn)小,右節(jié)點(diǎn)一定比父節(jié)點(diǎn)大,其他定義跟二叉樹(shù)相同。

代碼實(shí)現(xiàn):

public class node {
? ? int data;
? ? public node left, right=null;
?
? ? public node(int data) {
? ? ? ? this.data = data;
?
? ? }
?
? ? public node(int data, node left, node right) {
? ? ? ? this.data = data;
? ? ? ? this.right = right;
? ? ? ? this.left = left;
? ? }
? ? //二叉搜索樹(shù)
? ? public static void insert(node root, node node) {
?
? ? ? ? if (root.data >= node.data) {
?
? ? ? ? ? ? if (root.right != null) {
? ? ? ? ? ? ? ? insert(root.right, node);
? ? ? ? ? ? }else{
? ? ? ? ? ? ? ? root.right=node;
? ? ? ? ? ? }
?
? ? ? ? } else {
?
? ? ? ? ? ? if (root.left != null) {
? ? ? ? ? ? ? ? insert(root.left,node);
? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? root.left=node;
? ? ? ? ? ? }
? ? ? ? }
?
? ? }
?
? ? //前序遍歷
? ? public static void before(node root) {
? ? ? ? if (root == null) {
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? System.out.println("data:" + root.data);
? ? ? ? before(root.left);
? ? ? ? before(root.right);
? ? }
?
? ? //中序遍歷
? ? public static void mid(node root) {
? ? ? ? if (root == null) {
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? mid(root.left);
? ? ? ? System.out.println("data:" + root.data);
? ? ? ? mid(root.right);
? ? }
?
? ? //后序遍歷
? ? public static void after(node root) {
? ? ? ? if (root == null) {
? ? ? ? ? ? return;
? ? ? ? }
? ? ? ? after(root.left);
? ? ? ? after(root.right);
? ? ? ? System.out.println("data:" + root.data);
?
? ? }
?
? ? public static boolean search(int target, node root) {
? ? ? ? if(root == null) {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? if (root.data > target) {
? ? ? ? ? ? search(target, root.left);
? ? ? ? } else if (root.data < target) {
? ? ? ? ? ? search(target, root.right);
? ? ? ? } else {
? ? ? ? ? ? return true;
? ? ? ? }
? ? ? ? return false;
? ? }
?
?
}

node.java中:data 節(jié)點(diǎn)存放的數(shù)據(jù),left,right 左右子節(jié)點(diǎn)

before() after() mid()為三種前序遍歷,中序遍歷,后序遍歷。關(guān)鍵方法 insert() search()

insert():參數(shù):root node root為你的根節(jié)點(diǎn),node為你要插入的節(jié)點(diǎn)。遞歸調(diào)用insert()當(dāng)遞歸到某個(gè)節(jié)點(diǎn)的右節(jié)點(diǎn)為空時(shí)表示可以插入數(shù)據(jù)

流程:

這里有六個(gè)節(jié)點(diǎn)作為示例:圓中為數(shù)據(jù),簡(jiǎn)單的一個(gè)節(jié)點(diǎn)。選定3為根節(jié)點(diǎn),隨機(jī)插入0 2 1 4 5 6 

第一步,根節(jié)點(diǎn)3,第二步分別插入021 比三大的數(shù)跟這個(gè)類似,不做展示了。

插入0的時(shí)候沒(méi)有問(wèn)題,放在3的左邊,插入2的時(shí)候,遞歸,2<3,2>0先看當(dāng)前節(jié)點(diǎn)(也就是3)的右邊是否有數(shù)據(jù),為什么不看當(dāng)前節(jié)點(diǎn)左子節(jié)點(diǎn)的數(shù)據(jù),因?yàn)椋?dāng)前節(jié)點(diǎn)的左子節(jié)點(diǎn)一定比當(dāng)前節(jié)點(diǎn)大,所以只找當(dāng)前節(jié)點(diǎn)右邊的數(shù)據(jù)。當(dāng)右邊節(jié)點(diǎn)為空的時(shí)候,才會(huì)插入數(shù)據(jù),這樣2就插入完成了,現(xiàn)在輪到1了,對(duì)于1,跟上面類似..

但是這樣會(huì)造成一個(gè)問(wèn)題:這樣的查找效率很低,對(duì)于這樣特定的數(shù)據(jù),所以要使用平衡二叉樹(shù)中的旋轉(zhuǎn),重新選定節(jié)點(diǎn)來(lái)平衡二叉樹(shù)。關(guān)于二叉樹(shù)的文章,過(guò)幾天發(fā)布。

主函數(shù):

public class main {
? ? public static void main(String[] args) {
? ? ? ? node root = new node(0);
? ? ? ? node root1 = new node(2);
? ? ? ? node root2 = new node(1);
? ? ? ? node root3 = new node(3);
? ? ? ? node root4 = new node(4);
? ? ? ? node root5 = new node(5);
? ? ? ? node root6 = new node(6);
? ? ? ? node.insert(root3,root);
? ? ? ? node.insert(root3,root2);
? ? ? ? node.insert(root3,root1);
? ? ? ? node.insert(root3,root4);
? ? ? ? node.insert(root3,root5);
? ? ? ? node.insert(root3,root6);
? ? ? ? node.mid(root3);
? ? ? ? boolean i= node.search(10,root3);
? ? ? ? System.out.println(i);
? ? ?
? ? }
?
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 隱藏idea的.idea和.mvn文件的解決方案

    隱藏idea的.idea和.mvn文件的解決方案

    這篇文章主要介紹了隱藏idea的.idea和.mvn文件的解決方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07
  • 用Java集合中的Collections.sort方法如何對(duì)list排序(兩種方法)

    用Java集合中的Collections.sort方法如何對(duì)list排序(兩種方法)

    本文通過(guò)兩種方法給大家介紹java集合中的Collections.sort方法對(duì)list排序,第一種方式是list中的對(duì)象實(shí)現(xiàn)Comparable接口,第二種方法是根據(jù)Collections.sort重載方法實(shí)現(xiàn),對(duì)collections.sort方法感興趣的朋友一起學(xué)習(xí)吧
    2015-10-10
  • 用Set類判斷Map里key是否存在的示例代碼

    用Set類判斷Map里key是否存在的示例代碼

    本篇文章主要是對(duì)用Set類判斷Map里key是否存在的示例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-12-12
  • Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile詳解

    Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile詳解

    這篇文章主要給大家介紹了關(guān)于Java面試官最喜歡問(wèn)的關(guān)鍵字之volatile的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題

    myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題

    這篇文章主要介紹了myBatis實(shí)現(xiàn)三級(jí)嵌套復(fù)雜對(duì)象的賦值問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 解決Springboot集成Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗問(wèn)題

    解決Springboot集成Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗問(wèn)題

    在Springboot 集成 Redis集群配置公網(wǎng)IP連接報(bào)私網(wǎng)IP連接失敗,一直報(bào)私有IP連接失敗,所以本文小編給大家介紹了如何解決報(bào)錯(cuò)問(wèn)題,如果有遇到相同問(wèn)題的同學(xué),可以參考閱讀本文
    2023-10-10
  • 搭建MyBatis-Plus框架并進(jìn)行數(shù)據(jù)庫(kù)增刪改查功能

    搭建MyBatis-Plus框架并進(jìn)行數(shù)據(jù)庫(kù)增刪改查功能

    這篇文章主要介紹了搭建MyBatis-Plus框架并進(jìn)行數(shù)據(jù)庫(kù)增刪改查,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • SpringBoot中@Autowired生效方式詳解

    SpringBoot中@Autowired生效方式詳解

    @Autowired注解可以用在類屬性,構(gòu)造函數(shù),setter方法和函數(shù)參數(shù)上,該注解可以準(zhǔn)確地控制bean在何處如何自動(dòng)裝配的過(guò)程。在默認(rèn)情況下,該注解是類型驅(qū)動(dòng)的注入
    2022-06-06
  • Java調(diào)用opencv實(shí)現(xiàn)圖片矯正功能

    Java調(diào)用opencv實(shí)現(xiàn)圖片矯正功能

    這篇文章主要為大家詳細(xì)介紹了Java如何調(diào)用opencv實(shí)現(xiàn)圖片矯正功能,文中的示例代碼簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-09-09
  • Java  HttpURLConnection超時(shí)和IO異常處理

    Java HttpURLConnection超時(shí)和IO異常處理

    這篇文章主要介紹了Java HttpURLConnection超時(shí)和IO異常處理的相關(guān)資料,需要的朋友可以參考下
    2016-09-09

最新評(píng)論

山西省| 中西区| 任丘市| 绩溪县| 清远市| 历史| 自贡市| 长宁区| 襄汾县| 彭泽县| 青阳县| 乐亭县| 汉寿县| 怀远县| 家居| 合阳县| 廉江市| 云南省| 三亚市| 梁平县| 九龙城区| 应用必备| 涿州市| 台东市| 巨鹿县| 从江县| 澜沧| 江安县| 洱源县| 周口市| 赣州市| 岳普湖县| 蒙城县| 双辽市| 柳河县| 阿荣旗| 甘泉县| 黎城县| 民权县| 徐水县| 江都市|