本函数(见下述代码)能够实现将二叉树(最小节点数为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; }



