真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

二叉樹的簡單遞歸實現(xiàn)(創(chuàng)建,遍歷,高度,大小)

二叉樹

在蕉嶺等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供網站建設、成都網站建設 網站設計制作按需規(guī)劃網站,公司網站建設,企業(yè)網站建設,高端網站設計,全網營銷推廣,外貿網站制作,蕉嶺網站建設費用合理。

二叉樹:二叉樹是一棵特殊的樹,二叉樹每個節(jié)點最多有兩個孩子結點,分別稱為左孩子和右孩子

滿二叉樹:高度為N的滿二叉樹有2^N - 1個節(jié)點的二叉樹。

二叉樹的簡單遞歸實現(xiàn)(創(chuàng)建,遍歷,高度,大?。?></p><p>完全二叉樹: 若設二叉樹的深度為h,除第 h 層外,其它各層 (1~h-1) 的結點數(shù)都達到最大個數(shù),第 h 層所有的結點都連續(xù)集中在最左邊,這就是完全二叉樹</p><p><img src=_leftChild);//遞歸訪問左子樹 _PrevOrder(root->_rightChild);//遞歸訪問右子樹 } void _InOrder(Node* root) { //如果節(jié)點為空則直接返回 if (root == NULL) { return; } _InOrder(root->_leftChild);//訪問左子樹 cout << root->_data << " ";//遞歸訪問根節(jié)點 _InOrder(root->_rightChild);//遞歸訪問右子樹 } void _PostOrder(Node* root) { //如果節(jié)點為空則直接返回 if (root == NULL) { return; } _PostOrder(root->_leftChild);//訪問左子樹 _PostOrder(root->_rightChild);//遞歸訪問右子樹 cout << root->_data << " ";//遞歸訪問根節(jié)點 } //層次遍歷 void _LevelOrder(Node* root) { if (root == NULL) { return; } queue q; q.push(root);//根節(jié)點入隊 while (!q.empty())//當隊列不為空 { if (q.front()->_leftChild) { q.push(q.front()->_leftChild); } if (q.front()->_rightChild) { q.push(q.front()->_rightChild); } cout << q.front()->_data << " "; q.pop(); } } size_t _Size(Node* root) { size_t count = 0; if (root == NULL) { return count;//樹為空 } count++;//根節(jié)點 count += _Size(root->_leftChild);//計算左子樹大小 count+= _Size(root->_rightChild);//計算右子樹大小 return count; } //返回左右子樹深度較大的 size_t _Depth(Node* root) { if (root == NULL) { return 0; } size_t LeftDepth = _Depth(root->_leftChild); size_t RightDepth= _Depth(root->_rightChild); if (LeftDepth > RightDepth) { return ++LeftDepth; } else { return ++RightDepth; } } size_t _LeafSize(Node*root) { if (root == NULL) { return 0; } if (root->_leftChild == NULL && root->_rightChild == NULL) { return 1; } return _LeafSize(root->_leftChild)+ _LeafSize(root->_rightChild); } Node* _Copy(Node* root) { if (root == NULL) { return NULL; } Node* newRoot = new Node(root->_data); newRoot->_leftChild = _Copy(root->_leftChild); newRoot->_rightChild = _Copy(root->_rightChild); return newRoot; } void _Destory(Node* root) { if (root == NULL) { return; } //刪除葉結點 if (root->_leftChild == NULL&&root->_rightChild == NULL) { delete root; root = NULL; return; } _Destory(root->_leftChild);//遞歸刪除左子樹 _Destory(root->_rightChild);//遞歸刪除右子樹 delete root; } private: BinaryTreeNode* _root;//根節(jié)點 };

測試代碼

#include"BinaryTree.h"

void TestBinary()
{
	/*int a1[10] = { 1,2,3,'#','#',4,'#','#',5,6 };
	BinaryTree t1(a1, 10, '#');
	cout << "先序遍歷:";
	t1.PrevOrder();
	cout << "中序遍歷:";
	t1.InOrder();
	cout << "后序遍歷:";
	t1.PostOrder();
	cout << "層次遍歷:";
	t1.LevelOrder();
	cout << "size:" << t1.Size() << endl;
	cout << "depth:" << t1.Depth() << endl;
	cout << "leafSize:" << t1.LeafSize() << endl;*/

	int a2[15] = { 1,2,'#',3,'#','#',4,5,'#',6 ,'#' ,7,'#' ,'#' ,8 };
	int a[] = { 1,2,'#','#',3 };
	BinaryTree t1(a, 5, '#');
	BinaryTree t2;
	t2 = t1;
	cout << "先序遍歷:"; 
	t2.PrevOrder();
	cout << "中序遍歷:";
	t2.InOrder();
	cout << "后序遍歷:";
	t2.PostOrder();
	cout << "層次遍歷:";
	t2.LevelOrder();
	cout << "size:" << t2.Size() << endl;
	cout << "depth:" << t2.Depth() << endl;
	cout << "leafSize:" << t2.LeafSize() << endl;
}
int main()
{
	TestBinary();
	getchar();
	return 0;
}

測試結果

二叉樹的簡單遞歸實現(xiàn)(創(chuàng)建,遍歷,高度,大?。?></p>            
            
                        <br>
            網站名稱:二叉樹的簡單遞歸實現(xiàn)(創(chuàng)建,遍歷,高度,大?。?           <br>
            文章出自:<a href=http://weahome.cn/article/pjjhei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部