[CareerCup] 13.7 Node Pointer 节点指针

简介:

13.7 Write a method that takes a pointer to a Node structure as a parameter and returns a complete copy of the passed in data structure. The Node data structure contains two pointers to other Nodes.

在这道题让我们通过一个节点指针来复制整个数据结构,节点类Node中包含两个节点指针,我们需要用哈希表来建立原数据结构中每一个节点的地址到相对应的新结构中的地址,这样我们就可以在用DFS的时候知道哪些节点我们已经拷贝过了,就可以直接跳过。通过这种方式来标记访问过的节点可以不用在节点内部存储。拷贝过程如下所示:

class Node {
public:
    Node *ptr1;
    Node *ptr2;
};
typedef unordered_map<Node*, Node*> NodeMap;
class Solution {
public:
    Node* copy_structure(Node *root) {
        NodeMap m;
        return copy_recursive(root, m);
    }
    Node* copy_recursive(Node *cur, NodeMap &m) {
        if (cur == nullptr) return nullptr;
        auto it = m.find(cur);
        if (it != m.end()) return it->second;
        Node *node = new Node;
        m[cur] = node;
        node->ptr1 = copy_recursive(cur->ptr1, m);
        node->ptr2 = copy_recursive(cur->ptr2, m);
        return node;
    }
};

本文转自博客园Grandyang的博客,原文链接:节点指针[CareerCup] 13.7 Node Pointer ,如需转载请自行联系原博主。

相关文章
|
1月前
|
存储 Kubernetes 容器
【CKA模拟题】查找集群中使用内存最高的node节点
【CKA模拟题】查找集群中使用内存最高的node节点
17 1
|
2月前
|
JavaScript 前端开发
Node-RED 规则引擎重构:添加自定义节点
Node-RED 规则引擎重构:添加自定义节点
85 1
|
1月前
|
数据库 存储 监控
什么是 SAP HANA 内存数据库 的 Delta Storage
什么是 SAP HANA 内存数据库 的 Delta Storage
18 0
什么是 SAP HANA 内存数据库 的 Delta Storage
|
10天前
|
XML 存储 JavaScript
DOM 节点列表(Node List)
XML DOM允许访问XML文档的每个节点,提供三种访问方法:getElementsByTagName()、循环遍历和导航节点关系。getElementsByTagName()返回一个节点列表,类似于数组,可用于获取特定标签名的节点。例如,加载&quot;books.xml&quot;后,`xmlDoc.getElementsByTagName(&quot;title&quot;)`会获取所有&lt;title&gt;元素,存储在变量x中。通过索引如x[2]可访问第三个&lt;title&gt;元素,注意索引从0开始。后续章节将进一步探讨节点列表(Node List)。
|
1天前
|
JavaScript
DOM 节点列表长度(Node List Length)
`length`属性用于获取DOM节点列表的长度,允许遍历和处理节点。例如,加载&quot;books.xml&quot;到`xmlDoc`,通过`getElementsByTagName(&quot;title&quot;)`获取所有标题节点,然后使用循环输出每个&lt;title&gt;元素的文本内容。
|
2天前
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
LabVIEW使用VI服务器的调用节点将数据传递到另一个VI 使用调用节点(Invoke Node)与通过引用调用节点(Call by Reference)调用VI时有什么差别?
|
6天前
|
JavaScript
DOM 属性列表(命名节点图 Named Node Map)
这段内容介绍了DOM中的`attributes`属性,它返回元素节点的属性节点列表,形成一个命名节点图。这个列表自动更新,当属性增删时反映变化。示例代码展示了如何加载&quot;books.xml&quot;,获取第一个`&lt;book&gt;`元素的属性列表,然后使用`getNamedItem()`方法获取&quot;category&quot;属性的值并显示属性数量。输出为&quot;cooking&quot;和&quot;1&quot;。
|
6天前
|
XML 数据格式
节点列表长度(Node List Length)
`NodeList`对象自动更新,其`length`属性表示列表中节点数量。例如,加载&quot;books.xml&quot;后,`getElementsByTagName(&#39;title&#39;).length`返回`4`。此属性可用来遍历列表,如示例所示,遍历所有`&lt;title&gt;`元素并打印其文本内容:Everyday Italian, Harry Potter, XQuery Kick Start, Learning XML。
|
7天前
|
XML 数据格式
节点列表长度(Node List Length)
`Node List`对象自动更新,其`length`属性表示列表中节点数量。在给定示例中,代码加载&quot;books.xml&quot;,并利用`getElementsByTagName(&#39;title&#39;)`获取&lt;title&gt;元素的数量,结果为4。`length`也可用于遍历列表,如示例所示,遍历并打印所有&lt;title&gt;元素的文本内容:Everyday Italian, Harry Potter, XQuery Kick Start, Learning XML。
|
10天前
|
XML 数据格式
节点类型(Node Types)
该教程介绍了XML文档的根节点通过documentElement属性获取,节点信息包括nodeName(节点名)和nodeType(节点类型)。下一章将深入探讨节点属性。示例代码展示了如何遍历根节点的子节点,仅输出元素节点的名称,通过检查nodeType为1来判断是否为元素节点。

热门文章

最新文章