题解 | #输出二叉树的右视图#

输出二叉树的右视图

http://www.nowcoder.com/practice/c9480213597e45f4807880c763ddd5f0


/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 * 求二叉树的右视图
 * @param xianxu int整型一维数组 先序遍历
 * @param zhongxu int整型一维数组 中序遍历
 * @return int整型一维数组
*/

func solve( xianxu []int ,  zhongxu []int ) []int {
	// write code here
	root := createTree(xianxu,zhongxu)
	if root == nil {
		return []int{}
	}

	queue := []*TreeNode{root}
	var rights []int

	    for len(queue) > 0 {
	        l := len(queue)
	        for i:=0;i<l;i++{
	            root := queue[0]
	            queue= queue[1:]
	            if root.Left != nil {
	                queue = append(queue,root.Left)
	            }
	            if root.Right != nil {
	                queue = append(queue,root.Right)
	            }

	            if i == l-1{
	                rights = append(rights,root.Val)
	            }
	        }
	    }
	return rights
}


func createTree(preorder,inorder []int) *TreeNode{
	if len(preorder) == 0 || len(inorder) == 0 {
		return nil
	}

	root := &TreeNode{Val:preorder[0]}

	i := 0
	for ;i<len(inorder);i++{
		if inorder[i] == preorder[0]{
			break
		}
	}

	root.Left = createTree(preorder[1:i+1],inorder[:i])
	root.Right = createTree(preorder[i+1:],inorder[i+1:])
	return root
}
全部评论

相关推荐

珩珺:那些经历都太大太空了,实习的情况不了解,大创项目连名字、背景、目的及意义都没体现出来;地摊经济更是看完连卖的什么产品都不知道,项目成果直接写营收多少都更直观真实一点;后面那个校文体部的更是工作内容是组织活动整理流程,成果变成了当志愿者,而且你们学校本科学生会大一入学就直接当部长吗,志愿里面还提到了疫情防控,全面解封是22年12月的事情,可能时间上也有冲突。可能你花了钱人家就用AI给你随便写了点内容改了一下,没什么体现个性化的点
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务