...
最近想熟悉一下基本的數據結構和算法,於是寫了一個二叉樹程序,功能很簡單,只有二叉樹的建立和遍歷。在這個過程中,卻發現了一些平時沒有注意到的細節問題,寫出來作為總結和大家分享。 待討論和遇到的細節問題如下: 常見的定式思維:指針作為參數傳遞,是否就不需要再賦值,因為指針指向的值會同步更改,但是,你有考慮過,如果指針變量本身的值被更改了呢 怎么辦 比較不常用的用法,針對指針變量的引用,你用過嗎 前提: ...
2013-06-19 15:23 7 1257 推薦指數:
...
1、指針作為參數傳遞進去的僅僅只是指針的值,而不是指針的地址,或者說只是指針的一份拷貝,例如: 1、例子中,指針p的拷貝傳入了方法中(其地址變了,說明是另一變量;值和指向的內存塊數據沒變) 2、將p的拷貝視作p1,p1改變了其所指向的內存塊的值為11 3、p1的值改變為a的地址 ...
僅供JavaScript刷題參考用。 二叉查找樹和平衡二叉樹 完全二叉樹 若設二叉樹的深度為k,除第 k 層外,其它各層 (1~k-1) 的結點數都達到最大個數,第k 層所有的結點都連續集中在最左邊,這就是完全二叉樹。 其它樹:滿二叉樹、完美二叉樹、哈弗曼樹、二叉查找樹BST ...
定義: 二叉樹(Binary Tree)是n(n>=0)個節點的有限集合,該集合或者空集(稱為空二叉樹),或者由一個根節點和兩棵互不相交的,分別稱為根節點的左子樹和右子樹的二叉樹組成。 特點: 每個結點最多有兩棵子樹,所以二叉樹中不存在度大於2的結點。注意 ...
目錄 1 二叉樹基本算法 1.1 二叉樹的遍歷 1.1.1 二叉樹節點定義 1.1.2 遞歸實現先序中序后序遍歷 1.1.3 非遞歸實現先序中序后序遍歷 1.1.4 二叉樹按層遍歷 ...
前面我們介紹了函數的調用約定,明白了函數調用者與被調用者之間傳遞參數的順序與如何進行棧恢復的。 實際上,函數調用者如何將參數傳遞給被調用者也是有講究的。 總的來說,函數參數傳遞分為3種情況:傳值,傳指針和傳引用。首先,理解一下實參與形參的概念。int func(int x)//x是形參 ...
指針作為函數參數傳遞 函數參數傳遞的只能是數值,所以當指針作為函數參數傳遞時,傳遞的是指針的值,而不是地址。 輸出結果: %p為指針所指向的數據的地址,這里既為變量b的地址。 在沒有進入pointer函數之前,變量p存儲的值為28FF3C,變量p的地址 ...
首先,個人認為,二叉樹是很能體會遞歸算法思想的,因為二叉樹的結構是leftTree->root<-rightTree,對於每個非葉子節點,該規律都適用,因此關於二叉樹的很多算法也都能用遞歸思想搞定。遞歸的優點在於代碼簡潔,但效率卻是問題。其次,對於各種順序的遍歷,又有着相應的非遞歸算法 ...