幾個二叉樹和二叉搜尋樹的題目

2021-10-02 16:58:59 字數 2507 閱讀 8780

首先用遞迴實現

function

mirrior

(root)if(

!root)

return

true

;return

help

(root.left, root.right)

;}

接著用迴圈實現

function

mirrior

(root)

return

true

;}

這道題有一點很坑的是最長路徑不一定經過根節點。

function

longr

=(root)

=>

lethelp

=(root)

=>if(

!root)

return

0return

help

(root)

}

這是優化之後的

function

longr

=(root)

=>if(

!root)

return

0help

(root)

return max

}

首先使用遞迴

function

allpath

(root)

path.

pop()}

help

(root)

return res

}

接著使用迴圈,後序遍歷

function

allpath

(root)

let node = stack.

slice(-

1)[0

]if(!node.right &&

!node.left)

if(node.right&&

!dic.

has(node.right)

)else

}return res

}

function

maxpathsum

(root)

let max = number.

min_safe_integer

help

(root)

return max

}

首先是中序遍歷的方法

function

isvalid

(root)

return

help

(root)

}

限定上下界進行dfs的方法,分為遞迴和迴圈

function

isbst

(root)

return

help

(root, number.

max_safe_integer

, number.

min_safe_number

)}

function

isbst

(root)

if(node.right)

}return

true

}

function

changetobst

(nums)

return

help(0

, nums.length-1)

}

遞迴

function

changetolist

(root)

p.right = root.right

root.right = root.left

root.left =

null

}}

迴圈

function

changetolist

(root)

let node = stack.

slice(-

1)[0

]if(node.right &&

!dic.

has(node.right)

)else

pp.right = node.right

node.right = node.left

node.left =

null

} stack.

pop()}

}}

function

allbst

(n)}

}return res

}return

help(1

,n)}

二叉樹 還原二叉樹 二叉搜尋樹

先序遍歷的特點 先遍歷根結點,再遍歷左子樹,最後再遍歷右子樹 中序遍歷的特點 先遍歷左子樹,再遍歷根結點,最後再遍歷右子樹 後序遍歷的特點 先遍歷左子樹,再遍歷右子樹,最後再遍歷根結點 舉例 先序遍歷 a b d f g h i e c 中序遍歷 f d h g i b e a c 如上,根據先序遍...

樹 二叉樹 二叉搜尋樹

給定乙個二叉樹,判斷其是否是乙個有效的二叉搜尋樹。假設乙個二叉搜尋樹具有如下特徵 節點的左子樹只包含小於當前節點的數。節點的右子樹只包含大於當前節點的數。所有左子樹和右子樹自身必須也是二叉搜尋樹。示例 1 輸入 2 13輸出 true 示例 2 輸入 5 14 3 6輸出 false 解釋 輸入為 ...

排序二叉樹or搜尋二叉樹or查詢二叉樹

排序二叉樹,搜尋二叉樹,查詢二叉樹都是乙個意思,只是叫法不同而已。下面的文章中我們統稱為排序二叉樹。本文主要是針對高中資訊學,因此其中不涉及到指標,所有需要用指標的地方都直接使用陣列進行模擬。排序二叉樹定義 1 若左子樹不空,則左子樹上所有結點的值均小於或等於它的根結點的值 2 若右子樹不空,則右子...