アルゴリズム課の第四周りFind Bottom Left Tree Value
1441 ワード
Given a binary tree、find the leftmost value in the last row of the tree.
Example 1:
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 アンズ } }
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 アンズ } }