博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode----116. Populating Next Right Pointers in Each Node
阅读量:4112 次
发布时间:2019-05-25

本文共 1750 字,大约阅读时间需要 5 分钟。

链接:

大意:

给定一棵完全二叉树root,该二叉树的所有叶子节点都在同一层。该二叉树数据结构定义如下:

class Node {    public int val;    public Node left;    public Node right;    public Node next;    public Node() {}    public Node(int _val,Node _left,Node _right,Node _next) {        val = _val;        left = _left;        right = _right;        next = _next;    }};

left和right域的解释与普通二叉树一样。而每个节点的next域指向同一层下一个位于它右边的节点,如果右边没有节点,则指向空,现在需要补全每个节点的next域指向信息。例子:

注意:上述说明中的$id为节点的编号,val才是节点的值

思路:

使用二叉树层次遍历的递归解法。

关于二叉树的层次遍历解法还可以看另一题:

代码:

/*// Definition for a Node.class Node {    public int val;    public Node left;    public Node right;    public Node next;    public Node() {}    public Node(int _val,Node _left,Node _right,Node _next) {        val = _val;        left = _left;        right = _right;        next = _next;    }};/*// $id是节点的编号 val才是节点的值{"$id":"1","left":{"$id":"2","left":{"$id":"3","left":null,"next":null,"right":null,"val":4},"next":null,"right":{"$id":"4","left":null,"next":null,"right":null,"val":5},"val":2},"next":null,"right":{"$id":"5","left":{"$id":"6","left":null,"next":null,"right":null,"val":6},"next":null,"right":{"$id":"7","left":null,"next":null,"right":null,"val":7},"val":3},"val":1}*/// 可用层次遍历的递归法解决class Solution {    public Node connect(Node root) {        connect(root, 0, new ArrayList<>());        return root;    }    public void connect(Node root, int h, List
> list) { if (root == null) return ; if (h == list.size()) list.add(new ArrayList<>()); if (list.get(h).size() > 0) { list.get(h).get(list.get(h).size() - 1).next = root; } list.get(h).add(root); connect(root.left, h + 1, list); connect(root.right, h + 1, list); }}

结果:

结论:

理清思路,想好方法,动手写代码。 

 

 

转载地址:http://kxesi.baihongyu.com/

你可能感兴趣的文章
Valid Palindrome 简单的回文判断
查看>>
Pascal's Triangle -- 生成杨辉三角
查看>>
Pascal's Triangle II 生成杨辉三角中的某行
查看>>
Minimum Depth of Binary Tree -- 二叉树的最小深度 DFS 加剪枝
查看>>
Climbing Stairs 爬楼梯方法 动态规划
查看>>
Merge Two Sorted Lists 合并两个有序链表
查看>>
pow(x,n) 为什么错这么多次
查看>>
Jump Game 动态规划
查看>>
Binary Tree Maximum Path Sum 自底向上求解(重重重重)
查看>>
Subsets 深搜
查看>>
Subsets II
查看>>
Edit Distance 字符串距离(重重)
查看>>
Gray Code 格雷码
查看>>
对话周鸿袆:从程序员创业谈起
查看>>
web.py 0.3 新手指南 - 如何用Gmail发送邮件
查看>>
web.py 0.3 新手指南 - RESTful doctesting using app.request
查看>>
web.py 0.3 新手指南 - 使用db.query进行高级数据库查询
查看>>
web.py 0.3 新手指南 - 多数据库使用
查看>>
一步步开发 Spring MVC 应用
查看>>
python: extend (扩展) 与 append (追加) 的差别
查看>>