二叉樹的綻放

2021-10-05 12:11:40 字數 2145 閱讀 8614

在這裡插入**片

```btnode*

binarytreecreate

(btdatatype* a,

int* pi)

else

return

null;}

void

binarytreedestory

(btnode*

* root)}/*

// 二叉樹節點個數: 左右子樹的節點 + 1

// 遍歷, 累加計數器

// int binarytreesize(btnode* root);

*/void

bianrytreesize2

(btnode* root,

int* num)

}// 二叉樹葉子節點個數

intbinarytreeleafsize

(btnode* root)

// 二叉樹第k層節點個數

intbinarytreelevelksize

(btnode* root,

int k)

// 二叉樹查詢值為x的節點

btnode*

binarytreefind

(btnode* root, btdatatype x)

//前序遍歷的遞迴

void

binarytreeprevorder

(btnode* root)

}//前序遍歷的非遞迴

void

binarytreeprevordernor

(btnode* root)

//獲取棧頂元素

top =

stacktop

(&st)

;stackpop

(&st)

;//訪問右子樹

cur = top->_right;

}printf

("\n");

}//中序遍歷的遞迴

void

binarytreeinorder

(btnode* root)

}//中序遍歷的非遞迴

void

binarytreeinordernor

(btnode* root)

//獲取棧頂元素

top =

stacktop

(&st)

;stackpop

(&st)

;//中序遍歷,訪問當前節點

printf

("%c "

, top->_data)

;//訪問右子樹

cur = top->_right;

}printf

("\n");

}//後序遍歷的遞迴

void

binarytreepostorder

(btnode* root)

}//後序遍歷的非遞迴

void

binarytreepostordernor

(btnode* root)

//獲取棧頂元素

top =

stacktop

(&st)

;//判斷右子樹是否訪問完成

//沒有右子樹或者右子樹已經訪問完成

if(top->_right ==

null

|| top->_right == prev)

else

cur = top->_right;

//右子樹還沒有訪問,需要先訪問右子樹

}printf

("\n");

}//層序遍歷

void

binarytreelevelorder

(btnode* root)

printf

("\n");

}//判讀是否是完全二叉樹

intbinarytreecomplete

(btnode* root)

else

break

;//停止入隊

}//判斷佇列中剩餘元素是否都為空節點

while

(queueempty

(&q)!=1

)}//剩餘元素都為空節點,是一棵完全二叉樹

return1;

}

二叉樹 二叉樹

題目描述 如上所示,由正整數1,2,3 組成了一顆特殊二叉樹。我們已知這個二叉樹的最後乙個結點是n。現在的問題是,結點m所在的子樹中一共包括多少個結點。比如,n 12,m 3那麼上圖中的結點13,14,15以及後面的結點都是不存在的,結點m所在子樹中包括的結點有3,6,7,12,因此結點m的所在子樹...

樹 二叉樹 滿二叉樹 完全二叉樹 完滿二叉樹

目錄名稱作用根 樹的頂端結點 孩子當遠離根 root 的時候,直接連線到另外乙個結點的結點被稱之為孩子 child 雙親相應地,另外乙個結點稱為孩子 child 的雙親 parent 兄弟具有同乙個雙親 parent 的孩子 child 之間互稱為兄弟 sibling 祖先結點的祖先 ancesto...

二叉樹 48 二叉樹 二叉樹的高度

目的 使用c 模板設計並逐步完善二叉樹的抽象資料型別 adt 內容 1 請參照鍊錶的adt模板,設計二叉樹並逐步完善的抽象資料型別。由於該環境目前僅支援單檔案的編譯,故將所有內容都集中在乙個原始檔內。在實際的設計中,推薦將抽象類及對應的派生類分別放在單獨的標頭檔案中。參考教材 課件,以及網盤中的鍊錶...