[leetcode-117]填充每个节点的下一个右侧节点指针 II
Posted twoheads
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[leetcode-117]填充每个节点的下一个右侧节点指针 II相关的知识,希望对你有一定的参考价值。
(1 AC)
填充每个节点的下一个右侧节点指针 I是完美二叉树。这个是任意二叉树
给定一个二叉树
struct Node { int val; Node *left; Node *right; Node *next; }
填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL
。
初始状态下,所有 next 指针都被设置为 NULL
。
示例:For example,
Given the following binary tree,
1 / 2 3 / \ 4 5 7
After calling your function, the tree should look like:
1 -> NULL / 2 -> 3 -> NULL / \ 4-> 5 -> 7 -> NULL
关键:
层序遍历
Java中的队列:Queue<TreeLinkNode> queue = new LinkedList<>();
/** * Definition for binary tree with next pointer. * public class TreeLinkNode { * int val; * TreeLinkNode left, right, next; * TreeLinkNode(int x) { val = x; } * } */ public class PopulatingNextRightPointersInEachNodeii { public void connect(TreeLinkNode root) { if (root == null) { return; } Queue<TreeLinkNode> queue = new LinkedList<>(); queue.add(root); while(queue.size() != 0) { int size = queue.size(); // 当前层节点数 TreeLinkNode node1 = queue.poll(); if (node1.left != null) queue.add(node1.left); if (node1.right != null) queue.add(node1.right); for (int i=1;i<size;i++) { TreeLinkNode node2 = queue.poll(); if (node2.left != null) queue.add(node2.left); if (node2.right != null) queue.add(node2.right); node1.next = node2; node1 = node2; } } } }
以上是关于[leetcode-117]填充每个节点的下一个右侧节点指针 II的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 116. 填充每个节点的下一个右侧节点指针
[leetcode]117. Populating Next Right Pointers in Each NodeII用next填充同层相邻节点
116. 填充每个节点的下一个右侧节点指针 二叉树 逆序BFS O(n)/ 利用 father.next遍历下层节点 O