咸阳学校网站建设哪家专业,广州继续教育平台登录入口,沈阳哪家医院人流做得最好,淘宝的网站怎么做Problem: 116. 填充每个节点的下一个右侧节点指针 文章目录 题目描述思路复杂度Code 题目描述 思路
遍历思想(利用二叉树的先序遍历) 本题目的难点在于对于不同父节点的邻接问题因此我们可以抽象将两两节点为一组#xff08;不同父节点的两个孩子节点也抽象为一组#xff09… Problem: 116. 填充每个节点的下一个右侧节点指针 文章目录 题目描述思路复杂度Code 题目描述 思路
遍历思想(利用二叉树的先序遍历) 本题目的难点在于对于不同父节点的邻接问题因此我们可以抽象将两两节点为一组不同父节点的两个孩子节点也抽象为一组在此基础上再将两个节点连接起来 此题中我门利用遍历思想利用先序遍历先将相同父节点的节点连接起来再利用父节点将逻辑上抽象的节点练级起来可能看起来不好懂直接看代码 复杂度
时间复杂度: O ( n ) O(n) O(n);其中 n n n为二叉树的节点个数 空间复杂度: O ( h ) O(h) O(h)其中 h h h为二叉树的高度 Code
/*
// Definition for a Node.
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;}
};
*/class Solution {public Node connect(Node root) {if (root null) {return null;}traverse(root.left, root.right);return root;}private void traverse(Node node1, Node node2) {if (node1 null || node1 null) {return;}// Pre-order position// Connect the two input nodes;node1.next node2;// Connect two child nodes with the same parenttraverse(node1.left, node1.right);traverse(node2.left, node2.right);// Connect two child nodes across parent nodes traverse(node1.right , node2.left);}
}