您现在的位置是:主页 > news > joomla 2.5:你的网站建设_使用与管理 pdf/技术优化seo
joomla 2.5:你的网站建设_使用与管理 pdf/技术优化seo
admin2025/6/18 17:00:44【news】
简介joomla 2.5:你的网站建设_使用与管理 pdf,技术优化seo,资格证网站怎么做,怎么样做公司网站所谓后继节点就是该节点的下一个遍历的节点。比如某个树的中序遍历为:3,2,1,5,4。那么1的后继节点就是5,前驱节点就是2。我们这里使用中序遍历。 public static class Node {public int value;public Node …
joomla 2.5:你的网站建设_使用与管理 pdf,技术优化seo,资格证网站怎么做,怎么样做公司网站所谓后继节点就是该节点的下一个遍历的节点。比如某个树的中序遍历为:3,2,1,5,4。那么1的后继节点就是5,前驱节点就是2。我们这里使用中序遍历。 public static class Node {public int value;public Node …
所谓后继节点就是该节点的下一个遍历的节点。比如某个树的中序遍历为:3,2,1,5,4。那么1的后继节点就是5,前驱节点就是2。我们这里使用中序遍历。
public static class Node {public int value;public Node left;public Node right;public Node parent;public Node(int data) {this.value = data;}
}
思路
中序遍历是按照左子节点->节点->右子节点打印的,所以,当给定一个节点的时候,我们可以知道这样一个规律:
- 如果该节点有右子树,那么其后继节点一定是其右子树最左边的节点
- 如果该节点右子节点为空,那么就往父节点处搜索,并且更新,直到父节点为左子节点的时候为止,该父节点就是其后继节点。
相同的,前序,的思路大致相同就不多说了。
代码
public static Node getSuccessorNode(Node node) {if (node == null) {return node;}if (node.right != null) {return getLeftMost(node.right);} else { // 无右子树Node parent = node.parent;while (parent != null && parent.right == node) { // 当前节点是其父亲节点右孩子node = parent;parent = node.parent;}return parent;}
}public static Node getLeftMost(Node node) {if (node == null) {return node;}while (node.left != null) {node = node.left;}return node;
}