日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【整理自用】二叉树的子树、子结构

發布時間:2024/5/14 编程问答 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【整理自用】二叉树的子树、子结构 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

二叉樹的子樹和子結構

子樹的意思是只要包含了一個結點,就得包含這個結點下的所有節點.
子結構的意思是包含了一個結點,可以只取左子樹或者右子樹,或者都不取。

簡單而言,與子樹不同的是,子結構可以是A樹的任意一部分
這里以一顆7節點,高度為3的滿二叉樹為例,說明子樹和子結構的差別:

圖1


1.圖1的子樹示意圖

對于圖1而言,子樹意味著圖2,圖3等情況。根據定義非常好理解。

圖2 圖1子樹的某一種情況

圖3 圖1子樹的某一種情況


2.圖1的子結構示意圖

由于子結構可以是原樹的任意一個部分,因此圖3就是一個子結構。

圖4 圖1的子結構示意圖


3.求二叉樹A子樹的代碼

//函數聲明,這里是為了先看首先要調用的函數,才放到后面去的。bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2);//正式開始第一個函數bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){//因為定義空樹不是任何一個樹的子樹,因此如果有個根節點是空樹,那么直接返回falseif(pRoot1 == NULL || pRoot2 == NULL) return false;bool result = false;//如果當前兩個樹節點值相同,就調用其他函數判斷能否以當前節點為根節點下找到相同的子樹。if(pRoot1->val == pRoot2->val){result = isSubtree(pRoot1, pRoot2);}//如果不同或者是以當前節點為根節點下找不到相同的子樹,那么就看看A樹的左節點或者右節點中有沒有。if(!result)result = HasSubtree(pRoot1->left, pRoot2);if(!result)result = HasSubtree(pRoot1->right, pRoot2);return result;}bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2){//因為是子樹:只要包含了一個結點,就得包含這個結點下的所有節點。//因此,A樹與其子樹一定最后同時訪問到空指針。if(pRoot2 == NULL && pRoot1 == NULL)return true;else if(pRoot2 != NULL && pRoot1 != NULL){if(pRoot1->val != pRoot2->val){return false;}return isSubtree(pRoot1->left, pRoot2->left) && isSubtree(pRoot1->right, pRoot2->right);}elsereturn false;}

4. 求二叉樹A子結構的代碼

根據定義,可以知道子樹是子結構中的一種特殊情況,因此兩段代碼之間有很大的相似之處。
不同之處在于:
1. 子樹只要包含了一個結點,就得包含這個結點下的所有節點。因此,A樹與其子樹一定最后同時訪問到空指針。
2. 子結構只要包含任意相連的任意數量的結點即可。

因此,對于子結構而言,只要在子結構訪問到空指針之前,所有的節點均和A樹的某部分相同就可以了。

//函數聲明,這里是為了先看首先要調用的函數,才放到后面去的。bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2);//正式開始第一個函數bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2){//因為定義空樹不是任何一個樹的子樹,因此如果有個根節點是空樹,那么直接返回falseif(pRoot1 == NULL || pRoot2 == NULL) return false;bool result = false;//如果當前兩個樹節點值相同,就調用其他函數判斷能否以當前節點為根節點下找到相同的子樹。if(pRoot1->val == pRoot2->val){result = isSubtree(pRoot1, pRoot2);}//如果不同或者是以當前節點為根節點下找不到相同的子樹,那么就看看A樹的左節點或者右節點中有沒有。if(!result)result = HasSubtree(pRoot1->left, pRoot2);if(!result)result = HasSubtree(pRoot1->right, pRoot2);return result;}bool isSubtree(TreeNode* pRoot1, TreeNode* pRoot2){//這里不一樣!!!!//這里不一樣!!!!//這里不一樣!!!!//子結構訪問到空指針時,和A樹的比較都一直是true就是true.//而這個函數能一直循環下去,就意味著之前的比較都是true,因此,這里程序改為if(pRoot2 == NULL)return true;else if(pRoot1 == NULL) return false; else if(pRoot2 != NULL && pRoot1 != NULL){if(pRoot1->val != pRoot2->val){return false;}return isSubtree(pRoot1->left, pRoot2->left) && isSubtree(pRoot1->right, pRoot2->right);}elsereturn false;}

總結

以上是生活随笔為你收集整理的【整理自用】二叉树的子树、子结构的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 日本少妇b | 国产黄a | 怨女1988国语版在线观看高清 | 免费黄色在线看 | 99色网站| 久久99九九| 国产sm主人调教女m视频 | 婷婷国产精品 | 成人免费视频国产免费网站 | 国产成人综合一区二区三区 | 国v精品久久久网 | av资源共享 | 四虎一级片 | 日韩va视频 | 成人深夜在线 | 天天天干 | 亚洲黄色a级片 | 国产精品视频一区二区三区 | 特及毛片 | 热热热色| 欧美韩一区 | 成年人视频免费 | 1024国产视频 | 视频一区二区三区在线观看 | 欧美成人一区二区三区高清 | 一区二区三区www | 久久久中文网 | 亚洲乱码国产乱码精品精98午夜 | 国产一级av毛片 | 91老女人 | 国产精品h | 日韩精品免费在线 | 精品国产欧美 | 精品国产大片大片大片 | 国产精品一级片在线观看 | 一级大片儿 | av番号网 | 极品尤物一区二区三区 | 欧美一级片在线视频 | 不卡精品| 日韩欧美高清dvd碟片 | 欧美日韩1区2区3区 亚洲日本精品视频 | 伦理片久久 | 欧美综合成人 | 亚洲欧美色图片 | 美女超碰 | 国产一区二区在线视频观看 | 蜜桃视频一区二区三区在线观看 | 久福利| 深爱激情丁香 | 国产午夜福利视频在线观看 | 精品自拍视频在线观看 | 精品人妻午夜一区二区三区四区 | 一区二区中文在线 | 亚洲av无码国产精品久久 | 欧美午夜精品久久久久久孕妇 | 亚洲一线二线在线观看 | 在线播放国产视频 | 美女又爽又黄免费视频 | 日韩三级av | 日韩丰满少妇无码内射 | 1区2区3区在线观看 久久久久久久久久久影院 成人网址在线观看 | 国产热99 | 成人亚洲玉足脚交系列 | 偷偷操不一样的久久 | 免费日韩一区 | 天堂久久久久久 | 黄色的网站免费观看 | 久久久久亚洲av片无码v | 91麻豆国产在线 | 毛片在线观看网站 | 毛片网站网址 | www.啪啪.com| 人人干人人澡 | 欧美啪啪一区二区 | 亚洲vs天堂| 亚洲AV无码成人精品区明星换面 | 成人免费做受小说 | 性欧美大战久久久久久久 | 欧美理伦片在线播放 | av网站不卡| 欧美综合社区 | 国产强被迫伦姧在线观看无码 | 亚洲va天堂va欧美ⅴa在线 | 精品午夜福利在线观看 | 美国色视频| 丁香婷婷综合网 | 香蕉视频91 | 欲色网站 | www.色就是色 | 在线成人一区二区 | 九九热在线视频播放 | 国产粉嫩在线观看 | 婷婷伊人久久 | 男女瑟瑟视频 | 亚洲男女在线观看 | 高清av在线 | 一区二区三区在线视频免费观看 | 精品国产乱码久久久久久1区2区 |