本文主要是介绍199. 二叉树的右视图----深度优先搜索,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 二叉树的右视图
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。
示例:
输入: [1,2,3,null,5,null,4]
输出: [1, 3, 4]
解释:
1 <—
/
2 3 <—
\
5 4 <—
/*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*//*** Note: The returned array must be malloced, assume caller calls free().*/void dfs(struct TreeNode* root,int depth,int* res,int* returnSize) {if(root == NULL) {return;}if(depth == (*returnSize)) { //如果当前节点所在深度与装入的结果元素个数相等,//则表明该深度下当前节点是第一个被访问的节点(也就是该层最右边的节点),加入returnSizeres[(*returnSize)++] = root->val;}depth++;dfs(root->right,depth,res,returnSize);dfs(root->left,depth,res,returnSize);
}int* rightSideView(struct TreeNode* root, int* returnSize){if(root == NULL) {*returnSize = 0;return NULL;}int *res = (int *)malloc(1000 * sizeof(int));*returnSize = 0;dfs(root,0,res,returnSize);return res;
}
这篇关于199. 二叉树的右视图----深度优先搜索的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!