LeetCode 二叉樹相關題目

2021-10-08 14:27:48 字數 2730 閱讀 2021

class

solution

private

:// 遞迴的方法

void

inorder

(treenode* root, vector<

int>

& nodes)

inorder

(root-

>left, nodes)

; nodes.

push_back

(root-

>val)

;inorder

(root-

>right, nodes);}

// 非遞迴的方法

vector<

int>

inorder_iteration

(treenode* root)

root = todo.

top();

// 訪問當前節點

todo.

pop();

nodes.

push_back

(root -

> val)

; root = root -

> right;

}return nodes;}}

;

/*

* 利用乙個vectortemp記錄當前層的節點值

每次先計算對面中的size(),就可以知道當前層有多少節點

*/class

solution

ans.

push_back

(temp);}

return ans;}}

;

給定乙個二叉樹,檢查它是否是映象對稱的。

class

solution

return

helper

(root-

>left, root-

>right);}

bool

helper

(treenode* leftnode, treenode* rightnode)if(

!leftnode ||

!rightnode || leftnode-

>val != rightnode-

>val)

return

helper

(leftnode-

>left, rightnode-

>right)

&&helper

(leftnode-

>right, rightnode-

>left);}

};

lass solution 

int leftdepth =

maxdepth

(root-

>left)

;int rightdepth =

maxdepth

(root-

>right)

;return

max(leftdepth, rightdepth)+1

;}};

class

solution

bool

helper

(treenode* root,

long

long low,

long

long high)

if(root-

>val <= low || root-

>val >= high)

return

helper

(root-

>left, low, root-

>val)

&&helper

(root-

>right, root-

>val, high);}

};

class

solution

// 遞迴將中點設定為當前結點,遞迴左右結點

treenode*

helper

(vector<

int>

& nums,

int low,

int high)

int mid =

(low + high)/2

; treenode* root =

newtreenode

(nums[mid]);

root-

>left =

helper

(nums, low, mid -1)

; root-

>right =

helper

(nums, mid +

1, high)

;return root;}}

;

/*

* dp[i]表示i個結點有幾種解法

假設左邊分j個結點,根節點乙個,右邊結點就是i-j-1個結點

不使用遞迴,而使用遍歷陣列

*/class

solution

; dp[0]

=1; dp[1]

=1;for

(int i =

2; i <= n; i++)}

return dp[n];}

};

二叉樹的相關題目

目錄 1 求二叉樹的遍歷順序為自下至上,自右至左的層序遍歷序列 2 判斷二叉樹是否為完全二叉樹 3 統計二叉樹中雙分支結點的個數 4 求先序遍歷序列中第k個結點的值 5 求二叉樹的高度 6 判斷二叉樹是否為二叉排序樹 7 求出二叉排序樹中結點所在的層數 演算法思想 使用層序遍歷。二叉樹正常的層序遍歷...

6 二叉樹相關題目

目錄 nc5 二叉樹根節點到葉子節點和為指定值的路徑 思路 先序遍歷的思想 根左右 數字求和 每一層都比上層和 10 當前根節點的值 nc6 二叉樹的最大路徑和 思路1 遞迴樹的節點 思路2 層序遍歷 nc8 二叉樹根節點到葉子節點和為指定值的路徑 思路 樹的深度優先遍歷dfs nc9 二叉樹中是否...

leetcode題目 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 4 27 13 69輸出 4 72 96 31備註 這個問題是受到 max howell 的 原問題 啟發的 谷歌 我們90 的工程師使用您編寫的軟體 homebrew 但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。樹的結構 description aut...