資料結構 二叉樹

2021-09-10 14:55:51 字數 3995 閱讀 7499

二叉樹的深度 - 牛客

問題描述一棵二叉樹,求該樹的深度。從根結點到葉結點依次經過的結點(含根、葉結點)形成樹的一條路徑,最長路徑的長度為樹的深度。

c++

class

solution

};

思路c++

class

solution

}return ans;}}

;

leetcode - 662. 二叉樹最大寬度

問題描述

給定乙個二叉樹,編寫乙個函式來獲取這個樹的最大寬度。

樹的寬度是所有層中的最大寬度。

這個二叉樹與滿二叉樹(full binary tree)結構相同,但一些節點為空。

每一層的寬度被定義為兩個端點(該層最左和最右的非空節點,兩端點間的null節點也計入長度)之間的長度。

示例 1:

輸入:

1/ \

3 2

/ \ \

5 3 9

輸出: 4

解釋: 最大值出現在樹的第 3 層,寬度為 4 (5,3,null,9)。

示例 2:

輸入:

1/

3

/ \

5 3

輸出: 2

解釋: 最大值出現在樹的第 3 層,寬度為 2 (5,3)。

思路c++

class

solution);

int ans =0;

while

(!q.

empty()

));if

(p.first-

>right != nullptr)

q.push_back()

;}}return ans;}}

;

思路

樹的子結構 - 牛客

題目描述

輸入兩棵二叉樹a,b,判斷b是不是a的子結構。

約定空樹不是任意乙個樹的子結構。

思路

code(遞迴)

class

solution

bool issubtree

(treenode* p1, treenode* p2)

};

重建二叉樹 - 牛客

題目描述

根據二叉樹的前序遍歷和中序遍歷的結果,重建出該二叉樹。

假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。

思路code(python)

# class

treenode

:# def __init__

(self, x)

:# self.val = x

# self.left = none

# self.right = none

class

solution

: # 返回構造的treenode根節點

def reconstructbinarytree

(self, pre, tin):if

len(pre)

<1:

return none

root =

treenode

(pre[0]

) index = tin.

index

(root.val) # 注意值不重複,才可以這麼做

root.left = self.

reconstructbinarytree

(pre[1:

1+index]

, tin[

:index]

) root.right = self.

reconstructbinarytree

(pre[

1+index:

], tin[index+1:

])return root

序列化二叉樹 - nowcoder

題目描述

請實現兩個函式,分別用來序列化和反序列化二叉樹。

介面如下:

char* serialize(treenode *root);

treenode* deserialize(char *str);

空節點用 '#' 表示,節點之間用空格分開

思路code

class

solution

void

dfs_fw

(treenode *node)

ss_fw << node-

>val;

ss_fw <<

" ";

dfs_fw

(node-

>left)

; ss_fw <<

" ";

dfs_fw

(node-

>right);}

treenode*

deserialize

(char

*str)

treenode*

dfs_bw()

; node-

>left =

dfs_bw()

; node-

>right =

dfs_bw()

;return node;}}

;

《劍指 offer》 7.2 案例二

問題描述

給定一棵樹的根節點 root,和其中的兩個節點 p1 和 p2,求它們的最小公共父節點。
236. 二叉樹的最近公共祖先 - leetcode

二叉樹

#include 

bool getpath

(treenode* root, treenode* p, deque

>

& path)

非二叉樹

#include 

struct treenode

;bool getpath

(const treenode* root,

const treenode* p, deque<

const treenode*

>

& path)if(

!found)

// 如果沒有找到就,說明當前節點不在路徑內,彈出

path.

pop_back()

;return found;

}

資料結構 二叉樹 反轉二叉樹

include using namespace std define maxsize 1000 struct binary tree node class queue queue queue void queue push binary tree node btn binary tree node ...

《資料結構》 二叉樹

二叉樹 是 n個結點的有限集,它或為空集,或由乙個根結點及兩棵互不相交的 分別稱為該根的左子樹和右子樹的二叉樹組成。二叉樹不是樹的特殊情況,這是兩種不同的資料結構 它與無序樹和度為 2的有序樹不同。二叉樹的性質 1 二叉樹第 i層上的結點數最多為 2 i 1 2 深度為 k的二叉樹至多有 2 k 1...

資料結構 二叉樹

1.二叉樹 二叉樹是一種特殊結構的樹,每個節點中最多有兩個子節點,如圖1所示 圖1 二叉樹 在圖1中的二叉樹裡,a c有兩個子節點,b d有乙個子節點。對於二叉樹還有圖2中的以下情況 圖2 二叉樹的特殊情況 在博文中還介紹了滿二叉樹和完全二叉樹還有其他的特殊二叉樹。2.二叉樹的實現 有兩種實現方式,...