LeetCode199 側面觀察二叉樹

2021-10-09 20:23:05 字數 678 閱讀 2174

給定一棵二叉樹,想象自己站在它的右側,按照從頂部到底部的順序,返回從右側所能看到的節點值。

示例:輸入: [1,2,3,null,5,null,4]

輸出: [1, 3, 4]

解釋:思路:層序遍歷。遍歷時將每一層的最後乙個節點加入結果中。如何判斷節點是最後乙個?

層次遍歷時,將節點與層數繫結為pair,壓入佇列時,將節點與層數同時壓入佇列,並記錄每一層**現的最後乙個節點。在層次遍歷中,每一層中的最後乙個節點最後遍歷到,隨時更新對每層的最後乙個節點即可。

#include

#include

#include

using

namespace std;

struct treenode};

class

solution

q.push

(make_pair

(root,0)

);//根節點入隊

while

(!q.

empty()

)else

if(node-

>left)

if(node-

>right)

}return res;}}

;int

main()

return0;

}

leetcode 二叉樹 驗證二叉搜尋樹

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

leetcode 二叉樹 對稱二叉樹

給定乙個二叉樹,檢查它是否是映象對稱的。例如,二叉樹 1,2,2,3,4,4,3 是對稱的。1 2 2 3 4 4 3 但是下面這個 1,2,2,null,3,null,3 則不是映象對稱的 1 2 2 3 3 方法一 遞迴 思路 如果乙個樹的左子樹與右子樹映象對稱,則該樹是對稱的 兩個樹互為映象的...

LeetCode (二叉樹)反轉二叉樹

遞迴交換每乙個節點的左右子樹,重點在於訪問每乙個節點,然後交換左右子樹 definition for a binary tree node.struct treenode struct treenode inverttree struct treenode root 由於至少要講每乙個節點都訪問一次...