C語言重構 1367 二叉樹中的列表

2021-10-22 18:16:36 字數 2014 閱讀 6977

所有題目源**:git位址

題目

給你一棵以 root 為根的二叉樹和乙個 head 為第乙個節點的鍊錶。

如果在二叉樹中,存在一條一直向下的路徑,且每個點的數值恰好一一對應以 head 為首的鍊錶中每個節點的值,那麼請你返回 true ,否則返回 false 。

一直向下的路徑的意思是:從樹中某個節點開始,一直連續向下的路徑。

示例 1:

輸入:head =[4

,2,8

], root =[1

,4,4

,null,2,

2,null,

1,null,6,

8,null,null,null,null,1,

3]輸出:true

解釋:樹中藍色的節點構成了與鍊錶對應的子路徑。

示例 2:

輸入:head =[1

,4,2

,6], root =[1

,4,4

,null,2,

2,null,

1,null,6,

8,null,null,null,null,1,

3]輸出:true

示例 3:

輸入:head =[1

,4,2

,6,8

], root =[1

,4,4

,null,2,

2,null,

1,null,6,

8,null,null,null,null,1,

3]輸出:false

解釋:二叉樹中不存在一一對應鍊錶的路徑。

二叉樹和鍊錶中的每個節點的值都滿足 1

<= node.val <=

100 。

鍊錶包含的節點數目在 1 到 100 之間。

二叉樹包含的節點數目在 1 到 2500 之間。

方案:
/**

* definition for singly-linked list.

* struct listnode

* listnode(int x) : val(x), next(nullptr) {}

* listnode(int x, listnode *next) : val(x), next(next) {}

* };

*//**

* definition for a binary tree node.

* struct treenode

* treenode(int x) : val(x), left(nullptr), right(nullptr) {}

* treenode(int x, treenode *left, treenode *right) : val(x), left(left), right(right) {}

* };

*/class

solution

bool issubpathhelp

(listnode *head, treenode *root, bool isroot)

//當前值不匹配,但是呢,head是頭,可以root向下再匹配

if(isroot ==

true

)return

issubpathhelp

(head, root-

>left,

true)||

issubpathhelp

(head, root-

>right,

true);

return

false;}

};

複雜度計算

1367 二叉樹中的列表C

二叉樹資料結構如下 definition of binary tree node struct treenode 本題需要注意一點是子節點的匹配結果是受到父節點匹配結果影響的。分為兩種情況 父節點匹配成功 父節點匹配失敗 父節點匹配成功的情況 tree空 tree不空 list空 true true...

1367 二叉樹中的列表

題目描述 給你一棵以 root 為根的二叉樹和乙個 head 為第乙個節點的鍊錶。如果在二叉樹中,存在一條一直向下的路徑,且每個點的數值恰好一一對應以 head 為首的鍊錶中每個節點的值,那麼請你返回 true 否則返回 false 一直向下的路徑的意思是 從樹中某個節點開始,一直連續向下的路徑。示...

1367 查詢二叉樹 tree a

已知一棵二叉樹用鄰接表結構儲存,中序查詢二叉樹中值為x的結點,並指出是第幾個結點。例 如圖二叉樹的資料檔案的資料格式如下 第一行n為二叉樹的結點個樹,n 100 第二行x表示要查詢的結點的值 以下第一列資料是各結點的值,第二列資料是左兒子結點編號,第三列資料是右兒子結點編號。乙個數即查詢的結點編號。...