樹形結構是一種典型的非線性結構,除了用於表示相鄰關係外,還可以表示層次關係。每個結點最多有兩棵子樹。左子樹和右子樹是有順序的,次序不能任意顛倒。即使樹中某結點只有一棵子樹,也要區分它是左子樹還是右子樹。即為下圖。。
c#定義二叉樹:
publica-b兩個二叉樹,判斷b是否為a的子結構。class
binarytreenode
//左子樹
public binarytreenode leftchild
//右子樹
public binarytreenode rightchild
//資料域
public binarytreenode(int
data)
//指標域
public binarytreenode(int
data, binarytreenode left, binarytreenode right)
}
想法:該題使用遞迴法。步驟為:在樹a中找到和b的根結點的值一樣的結點;判斷以該節點為中心的左右子樹是否相同,相同即為子結構,不同繼續遞迴,直到結束。
classps:該題考點依舊是**的魯棒性,所以要格外注意,其實貌似就這麼一處吧if(proot1 == null || proot2 == null)。。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);}}
劍指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...