-
树的层次遍历的思路来解决
-
#include
#include
#include
using namespace std;
struct TreeNode
{
int val;
TreeNode lChild;
TreeNode rChild;
TreeNode(int val, TreeNodel = nullptr, TreeNoder = nullptr)
{
this->val = val;
this->lChild = l;
this->rChild = r;
}
};
TreeNode *create(int intarr[], int length, int i)
{
TreeNode *node = nullptr;if (i < length && intarr[i] != -1)
{
node = new TreeNode(intarr[i]);
node->lChild = create(intarr, length, i * 2 + 1);
node->rChild = create(intarr, length, i * 2 + 2);
}
return node;
}
vector BinaryTreeRightSideView(TreeNode *root)
{
vector res;
queue<TreeNode *> qnode;
qnode.push(root);
while (!qnode.empty())
{
int n = qnode.size();
for (int i = 0; i < n; i++)
{
TreeNode *t = qnode.front();
if (i == 0)
{
res.push_back(t->val);
}
if (t->rChild)
{
qnode.push(t->rChild);
}
if (t->lChild)
{
qnode.push(t->lChild);
}
qnode.pop();
}
}
return res;
}
int main()
{
int arr[7] = { 1,2,3,-1,5,-1,4 };
TreeNode *root = create(arr, 7, 0);
vector res = BinaryTreeRightSideView(root);
system(“pause”);
return 0;
}
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交