package tree; import java.util.LinkedList; import java.util.Queue; /** * 题目: 117. 填充每个节点的下一个右侧节点指针 II (buildTree) * 描述:给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 2: 输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] 输出:[3,9,20,null,null,15,7] * 链接:https://leetcode.cn/problems/construct-binary-tree-from-inorder-and-postorder-traversal/ */ public class Connect { class Node { public int val; public Node left; public Node right; public Node next; public Node() {} public Node(int _val) { val = _val; } public Node(int _val, Node _left, Node _right, Node _next) { val = _val; left = _left; right = _right; next = _next; } }; public Node connect(Node root) { Queuequeue=new LinkedList<>(); if(root==null)return null; queue.offer(root); while (!queue.isEmpty()){ int sz=queue.size(); Node cur=queue.poll(); if(cur.left!=null)queue.offer(cur.left); if(cur.right!=null)queue.offer(cur.right); for (int i = 1; i < sz; i++) { Node next =queue.poll(); cur.next=next; cur=next; if(cur.left!=null)queue.offer(cur.left); if(cur.right!=null)queue.offer(cur.right); } } return root; } }