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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

树知识点汇总

發布時間:2025/4/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 树知识点汇总 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算法動態展示網站
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
樹中任意節點具有孩子的數目,成為
節點含孩子數目無限制的樹成為廣義樹, general tree。
樹的平衡
對于一棵樹,如果樹的所有葉子都位于同一層或者相差不超過一層。
完全樹
樹是平衡的,且底層所有葉子都位于樹的左邊,認為樹是完全的。
滿樹
如果n元樹所有的葉子都位于同一層且每個結點要么是葉子結點要么具有n個孩子,則稱此樹是滿的。
一般而言,含有m個元素的平衡n元樹高度為lognm.

遍歷

前序
中序
后序
層序:創建結點隊列,創建結果list,將根節點入隊列,while(節點隊列不為空){
節點隊列出隊,當節點不為空,加入list,并將節點子女入隊列,否則,加入空到結果列表中。
}

對于表達式樹

遞歸

public int evaluate(BinaryTreenode root){ int result, op1, op2; if(root==null) {result=0; } else{ExpressionTreeOp result=root.getElement();if(result.isOperator()){op1=evaluate(root.getLeft());op2=evaluate(root.getRight());result=Comput(temp.getOperator,op1,op2);} else{result=temp.getValue(); }return result; } }

二叉搜索樹

在二叉搜索樹中:

① 若任意結點的左子樹不空,則左子樹上所有結點的值均不大于它的根結點的值;② 若任意結點的右子樹不空,則右子樹上所有結點的值均不小于它的根結點的值;③ 任意結點的左、右子樹也分別為二叉搜索樹。

插入一個節點
1 看是否為空,為空成為根節點
2. 不為空與根節點比較,比其小,根節點是否有左孩子,沒有,插入
3. 根節點有左孩子,遞歸,新的函數,傳入element與根節點的左孩子,繼續比較。

二叉搜索樹中刪除一個元素還不會

標注一下好難啊

AVL樹

是由GM Adelson - Velsky和EM Landis于1962年發明的。為了紀念其發明者,這樹結構被命名為AVL。
AVL樹可以定義為高度平衡二叉搜索樹,其中每個節點與平衡因子相關聯,該平衡因子通過從其左子樹的子樹中減去其右子樹的高度來計算。
如果每個節點的平衡因子在-1到1之間,則稱樹是平衡的,否則,樹將是不平衡的并且需要平衡。
平衡系數(k)=高度(左(k)) - 高度(右(k))
如果任何節點的平衡因子為1,則意味著左子樹比右子樹高一級。如果任何節點的平衡因子為0,則意味著左子樹和右子樹包含相等的高度。如果任何節點的平衡因子是-1,則意味著左子樹比右子樹低一級。
AVL樹如下圖所示。

堆是一個完全二叉樹,其中每一個節點都小雨或等于他的兩個孩子
最大堆:節點大于等于左右孩子
最小堆:節點小于等于左右孩子。
addElement: 先添加到最后,再向上與父元素進行兌換。
removeMin:移除

Set

Map

containsKey()
containsValue()
get(key)
put(key,value)

B 樹 B+樹

2-3查找樹
每個節點2個孩子(2節點)或3個孩子(3節點)
2節點要么沒有孩子,要么兩個孩子,2節點只有一個元素
3節點要么滅有孩子,要么三個孩子,3節點有2個元素,三個孩子分別是小于最小元素,大于最小小于大的,和大于大的
對于這種樹
仍然是左小右大。
2-3樹插入刪除操作,由于時間原因,僅僅只實現了插入操作。
2-3樹插入操作,分三類。
1.在頭節點插入這個可以直接生成一個二節點容納就行。
2.插入的是一個二節點直接將二節點升級成為三節點,保留原本的節點連接信息就ok了。
3.插入的是三節點:雖然別人分了很多種情況,但他們都有一個本質,就是如果待插入位置如果是三節點那么就分解它,向上拋擲,如果上面也是三節點,那么仍然需要拆解,向上拋擲,…等到如果拋擲到頭節點,如果頭節點也是三節點那么說明,這個樹高度不夠存放這個結構,就需要分解頭節點終止操作增加樹的高度。因為在往上沒有節點可以執行操作。
那好我們假定我們記錄的數據是1,2,3,4,5,6,7,8,9不失一般性,就從1開始按順序插入模擬程序運行。
原文:https://blog.csdn.net/qq_41657315/article/details/80571893

F 比e大,且e是一個點,插入,a比b小,先插入,發現是三個點,然后分裂,中間的b上去。



按大小插入,達到3個之后就進行分裂,中間的上去。

** 2-4樹**
一個節點包含3個元素(4節點)要么沒有孩子要么四個孩子

遍歷:
廣度優先
深度優先
最小生成樹:
prim: 加點法:選擇一個點,他周圍最小的邊對應的點加入,這個點和新加入的點構成新的集合,再選擇他們周圍最小的邊,對應的節點加入。
krustal :加邊法:選擇最小的邊依次加入 ,只要不成環即可。

總結

以上是生活随笔為你收集整理的树知识点汇总的全部內容,希望文章能夠幫你解決所遇到的問題。

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