資料結構與演算法之樹(一)

2021-08-20 07:26:37 字數 2387 閱讀 3103

樹是一些節點的集合。這些集合可以是空集,如果不是空集,那麼樹則由稱作根的節點r以及0個或多個非空的樹t1、t2.....tk組成。

如圖沒有兒子的節點稱為樹葉;具有相同父親的節點稱為兄弟;

深度:對於任意的節點n

i,從根到n

i的唯一路徑的長。

高:從ni到一片樹葉的最長路徑的長。

遍歷

先序遍歷:若樹為空則返回空,否則先訪問根節點,然後先序遍歷左子樹,然後先序遍歷又子樹。上圖先序遍歷的結果:a->b->d->e->c->f

後序遍歷:若二叉樹為空,則返回空,否則按照從左到右先葉子結點後節點,最後根節點的方式的方式訪問。上圖後序遍歷的結果:d->e->b->f->c->a。

中序遍歷:若二叉樹為空,則返回空。否則從根節點開始(注意不是先訪問根節點),中序遍歷根節點的左子樹,然後根節點然後中序遍歷根節點的右子樹。上圖中序遍歷的結果:d->b->e->a->f->c。

從上可知除去父節點,子節點的訪問三種遍歷方式都是從左到右。

二叉樹二叉樹是一棵樹,其中每個節點都不能有多餘兩個的兒子。

二叉查詢樹:二叉查詢樹又稱為二叉排序樹或者二叉搜尋樹。它具有以下的性質:

若左子樹不為空,則其左子樹上的值都下小於或者等於根節點的值;

若右子樹不為空,則右子樹上的所有值均大於或者等於根節點的值;

左右子樹也分別為兒二叉排序樹。

二叉查詢樹的實現:

package structures;

/** * 二叉查詢樹

*/public class binarysearchtree>

public binarysearchtree(binarynoderoot)

public void makeempty()

public boolean isempty()

public boolean contains(e ele)

public e findmax() throws exception

return findmax(root).element;

}public e findmin() throws exception

return findmin(root).element;

}public void insert(e ele)

public void remove(e e)

public void printtree()else

}private void printtree(binarynoderoot)

}private binarynoderemove(e e, binarynoderoot)

int compareresult = e.compareto(root.element);

if(compareresult<0)else if(compareresult>0)else if(null!=root.left && null!=root.right)else

return root;

}private binarynodeinsert(e ele, binarynoderoot)

int compareresult = ele.compareto(root.element);

if(compareresult<0)else if(compareresult>0)else

return root;

}private binarynodefindmin(binarynoderoot)

}return root;

}private binarynodefindmax(binarynoderoot)

}return root;

}private boolean contains(e ele, binarynoderoot)

int compareresult = ele.compareto(root.element);

if(compareresult<0)else if(compareresult>0)else

}/**

* 內部類

* @param */

private static class binarynode

public binarynode(e element, binarynodeleft, binarynoderight)

e element;

binarynodeleft;

binarynoderight;}}

第一部分樹的簡介及二插樹先寫到這裡,後面再寫二叉平衡樹和伸展樹等。

資料結構與演算法之樹

樹 元素之間儲存一對多關係的資料結構,常用於表現族譜關係 組織關係等,也可以借助特殊的樹型結構實現查詢 排序等演算法,一般使用倒懸樹的方式表示。樹的相關術語 根結點 樹的最上層元素,有且只能有乙個。子結點 該結點的對應下一層元素。父結點 該結點的對應上一層元素。葉子結點 沒有子結點的元素,一般處於樹...

資料結構與演算法之樹簡介

1.示例樹的圖示 2.樹的定義與結構特點 1.樹的定義 由乙個或者多個 n 0 節點組成的有限集合t,有且僅有乙個節點稱為根 root 當n 1的時候,其餘的節點分為m m 0 個互不相交的有限集合t1,t2,tm.每個集合本身又是棵樹,被稱作這顆樹的子樹.由此可以看出樹具有遞迴性,大樹裡面有小樹 ...

資料結構與演算法之2 3 4樹

外鏈轉存失敗,源站可能有防盜煉機制,建議將儲存下來直接上傳 img y3sprlm2 1615947159678 不太平衡的二叉樹 對於乙個普通的二叉查詢樹,我們可以發現乙個問題,存在一定的可能性,一般的二叉查詢樹會退化成一般的鍊錶.上圖還沒有完全退化,但是如果查詢6這個結點,會比其他的葉子結點走更...