樹是一些節點的集合。這些集合可以是空集,如果不是空集,那麼樹則由稱作根的節點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這個結點,會比其他的葉子結點走更...