ブラシ82-バイナリツリーの右側のビュー

121. 二分木の右側面図

タイトルリンク

ソース:LeetCode(LeetCode)
リンク:https ://leetcode-cn.com/problems/binary-tree-right-side-view

タイトルの説明

バイナリツリーが与えられた場合、その右側に立って、右側から見ることができるノード値を上から下に順番に返すことを想像してください。

例:

入力:[1,2,3、null、5、null、4]
出力:[
1、3、4 ] 説明:

1 <---
/ \
2 3 <---
\ \
5 4 <---

もっと難しい

BFSの幅優先トラバーサル

トピック分析

  1. バイナリツリーを格納するキューstrを定義し、チームに出入りする順序を記録し、ノードがキューに子ノードを記録したときに、キューからノードを削除します。
  2. 二分木の右端のノードarrを定義して保存します。
  3. バイナリツリーの右側から最初のノードを見ると、幅優先トラバーサルの最後の値になります。
  4. lenは、現在のレイヤーのノード数を記録するために使用されます。すべてのノードの子が記録されると、次のレイヤーのノードのトラバースを開始できます。
  5. arrを返します。

 

/ **
 *バイナリツリーノードの定義。
 *関数TreeNode(val){
 * this.val = val;
 * this.left = this.right = null;
 *}
 * /
/ **
 * @param {TreeNode}ルート
 * @return {number []}
 * /
var rightSideView = function(root){
    if(!root)return [];
    //二分木ノードを置くためのキューを定義します
    str = [];
    str.push(ルート);
    //右端のノードを記録します
    let arr = [];
    while(str.length){
        //このレイヤーの最初のノードをキューに入れます
        arr.push(str [0] .val);
        //ノードの数
        len = str.lengthとします。
        //このレイヤーのすべてのノードをトラバースします
        while(len-){
             //現在のノードに移動し、その子ノードをキュー(次のレイヤー)に入れ、ノードをデキューします
            letNode = str.shift();
            //子ノードは右から左にチームに入ります
            if(lastNode.right)str.push(lastNode.right);
            if(lastNode.left)str.push(lastNode.left);
        }
    }
    arrを返します。
};    

  

おすすめ

転載: www.cnblogs.com/liu-xin1995/p/12749286.html