劍指Offer的學習筆記(C 篇) 樹的子結構

2022-05-01 10:15:07 字數 1045 閱讀 9931

樹形結構是一種典型的非線性結構,除了用於表示相鄰關係外,還可以表示層次關係。每個結點最多有兩棵子樹。左子樹和右子樹是有順序的,次序不能任意顛倒。即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹。即為下圖。。

c#定義二叉樹:

public

class

binarytreenode

//左子樹

public binarytreenode leftchild

//右子樹

public binarytreenode rightchild

//資料域

public binarytreenode(int

data)

//指標域

public binarytreenode(int

data, binarytreenode left, binarytreenode right)

}

a-b兩個二叉樹,判斷b是否為a的子結構。

想法:該題使用遞迴法。步驟為:在樹a中找到和b的根結點的值一樣的結點;判斷以該節點為中心的左右子樹是否相同,相同即為子結構,不同繼續遞迴,直到結束。

class

solution

else

}public

static

bool

judge(treenode proot1, treenode proot2)

if (proot1 == null

)

if (proot1.val ==proot2.val)

}//遞迴

return judge(proot1.left,proot2) ||judge(proot1.right,proot2);}}

ps:該題考點依舊是**的魯棒性,所以要格外注意,其實貌似就這麼一處吧if(proot1 == null || proot2 == null)。。

劍指offer 學習筆記 樹

樹的寬度 廣度 優先遍歷 先訪問樹的第一層節點,再訪問第二層節點,直到最後一層。同一層節點中,從左到右依次訪問。二叉搜尋樹中,左子節點總是小於等於根節點,右子節點總是大於等於根節點。我們可以平均在o logn 的時間內根據節點值在二叉搜尋樹中找到乙個節點。二叉樹的特例有堆和紅黑樹。堆分最大堆和最小堆...

劍指offer學習筆記

筆記主要記錄方法和知識點 知識點1 負數與補碼 乙個參考 知識點2 移位操作 右移 變小 按位 操作 知識點3 0xffffffff表示32位 1 o logn 的方法 非遞迴的快速冪,用到二進位制表示。在迴圈內注意base base。兩個指標等間距一起走。想明白斷開鍊錶這個事情,相當於操作是在原有...

劍指offer學習筆記2

void matrix vector num,int x1,int y1,int x2,int y2 if x1 x2 if x1 x2 y1 y2 if x2 x1 1 y1 y2 x1 y1 x2 y2 template class stackwithmin else void pop t to...