栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

将二叉树转化为图结构

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将二叉树转化为图结构

本函数(见下述代码)能够实现将二叉树(最小节点数为1)转为图结构,是在做题的过程中用的一个函数,在这里发出来当个笔记吧

vector> constructGraph(TreeNode* root){
        vector gNode(5,0);//graphNode
        vector> graph;
        graph.push_back(vector(5,0));//5列分别表示:节点下标,节点值,父节点,左节点,右节点
        int n=0;//n表示当前入列节点数
        queue line;
        line.push(root); graph.push_back(gNode); n++;
        graph[n][0]=n; 
        graph[n][1]=root->val;        
        graph[n][2]=0;

        int li=0;//li表示当前列首节点下标,需要注意n和li的区别
        while(!empty(line)){            
            TreeNode* cur=line.front();li++;
            int curInd= graph[li][0];          

            TreeNode* L=cur->left;
            if(L){
                line.push(L); graph.push_back(gNode); n++;
                graph[n][0]=n;//节点下标
                graph[n][1]=L->val;//节点值       
                graph[n][2]=curInd;//父节点
                graph[curInd][3]=n;//当前节点的父节点的左节点是当前节点
            }
            
            TreeNode* R=cur->right;
            if(R){
                line.push(R); graph.push_back(gNode); n++; 
                graph[n][0]=n;
                graph[n][1]=R->val; 
                graph[n][2]=curInd;//父节点
                graph[curInd][4]=n;//当前节点的父节点的右节点是当前节点                
            }     
            line.pop();
        }
        return graph;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1025601.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号