アルゴリズム課の第四周りFind Bottom Left Tree Value

1441 ワード

Given a binary tree、find the leftmost value in the last row of the tree.
Example 1:
Input:

    2
   / \
  1   3

Output:
1
Example 2: 
Input:

        1
       / \
      2   3
     /   / \
    4   5   6
       /
      7

Output:
7
ノート: You may asume the tree(i.e.the given root node)is not NULL.
Subscribe to see which companies asked this question.
テーマ分析:
1、問題によって、一本の木の底(左側)の値を計算します.つまり、一番深い葉のノードを見つけます.複数があれば、一番左の木を取ります.
2、BFSアルゴリズム:BFSは本題の中で明らかにDFSよりもっと適しています.DFSに単独で記録する前の判定情報が必要ではないので、判断過程ももっと簡単です.具体的な実現はQueによって達成され、BFSは層順遍歴としても理解できます.私たちは従来の層順を少しずつ変更するだけで、つまり各層が右端からpushを開始すればいいです.このようにBFSが完成した時、最後の要素はすなわち求められた結点であり、そのvalに戻ればいいです.この問題はBFSを採用します
コード
[cpp]  view plin
 copy
/**   * Definition for a. binary tree node.   * struct TreeNode {   *     要点 val   *     TreeNode *left;   *     TreeNode *ライト   *     TreeNode(int x) : val(x) left(NULL)は、 ナイト(NULL) {}   * };   */   ヽoo.ツ        クラス Solution {   public:       要点 findBottom LeftValue(TreeNode*) root {           queue Q.           Q.push(root)           要点 アンズ           while(Q.size){               if(Q.front()->right != NULL)                   Q.push(Q.front()->right);               if(Q.front()->left != NULL)                   Q.push(Q.front()->left);               アンズ = Q.front()->val               Q.pop()           }            return アンズ        }   }