数据结构--树
/******************************************************************* Copyright(c) 2016, Harry He All rights reserved. Distributed under the BSD license. (See accompanying file LICENSE.txt at https://github.com/zhedahht/CodingInterviewChinese2/blob/master/LICENSE.txt) *******************************************************************/ //================================================================== // 《剑指Offer——名企面试官精讲典型编程题》代码 // 作者:何海涛 //================================================================== #pragma once #include <vector> struct TreeNode { int m_nValue; std::vector<TreeNode*> m_vChildren; }; __declspec( dllexport ) TreeNode* CreateTreeNode(int value); __declspec( dllexport ) void ConnectTreeNodes(TreeNode* pParent, TreeNode* pChild); __declspec( dllexport ) void PrintTreeNode(const TreeNode* pNode); __declspec( dllexport ) void PrintTree(const TreeNode* pRoot); __declspec( dllexport ) void DestroyTree(TreeNode* pRoot);
/******************************************************************* Copyright(c) 2016, Harry He All rights reserved. Distributed under the BSD license. (See accompanying file LICENSE.txt at https://github.com/zhedahht/CodingInterviewChinese2/blob/master/LICENSE.txt) *******************************************************************/ //================================================================== // 《剑指Offer——名企面试官精讲典型编程题》代码 // 作者:何海涛 //================================================================== #include "Tree.h" TreeNode* CreateTreeNode(int value) { TreeNode* pNode = new TreeNode(); pNode->m_nValue = value; return pNode; } void ConnectTreeNodes(TreeNode* pParent, TreeNode* pChild) { if(pParent != nullptr) { pParent->m_vChildren.push_back(pChild); } } void PrintTreeNode(const TreeNode* pNode) { if(pNode != nullptr) { printf("value of this node is: %d.\n", pNode->m_nValue); printf("its children is as the following:\n"); std::vector<TreeNode*>::const_iterator i = pNode->m_vChildren.begin(); while(i < pNode->m_vChildren.end()) { if(*i != nullptr) printf("%d\t", (*i)->m_nValue); } printf("\n"); } else { printf("this node is nullptr.\n"); } printf("\n"); } void PrintTree(const TreeNode* pRoot) { PrintTreeNode(pRoot); if(pRoot != nullptr) { std::vector<TreeNode*>::const_iterator i = pRoot->m_vChildren.begin(); while(i < pRoot->m_vChildren.end()) { PrintTree(*i); ++i; } } } void DestroyTree(TreeNode* pRoot) { if(pRoot != nullptr) { std::vector<TreeNode*>::iterator i = pRoot->m_vChildren.begin(); while(i < pRoot->m_vChildren.end()) { DestroyTree(*i); ++i; } delete pRoot; } }
分类:
B.1.1-C/C++ 基础
, B.1.2-算法和数据结构
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?