亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

二叉樹的前序、中序、后序線索化及遍歷

發布時間:2020-04-04 14:29:49 來源:網絡 閱讀:337 作者:shangluyi 欄目:編程語言

前序線索化:

void _PrevOrderThreading(Node *cur, Node *& prev)
{
    if(cur == NULL)
    {
        return;
    }
    
    if(cur->_left == NULL)
    {
        cur->_leftTag == THREAD;
        cur->_left = prev;
    }
    if(prev && prev->_right == NULL)
    {
        prev->_rightTag = THREAD;
        prev->_right = cur;
    }
    prev = cur;
    _PrevOrderThreading(cur->_left, prev);
    _PrevOrderThreading(cur->right, prev);
    
}



前序遍歷:

void PrevOrderThd()
{
    Node *cur = _root;
    while(cur)
    {
        while(cur->_leftTag == LINK)
        {
            cout << cur->_data << " ";
            cur = cur->_left;
        }
        cout << cur->_data << " ";
        
        
        cur = cur->right;
              
//      
//      while(cur->_rightTag == THREAD)
//      {
//          cur = cur->_right;
//          cout << cur->_data << " ";
//      }
//      if(cur->_leftTag == LINK)
//      {
//          cur = cur->_left;
//      }
//      else
//      {
//          cur = cur->_right;
//      }

    }
}


中序線索化:

void _InOrderThreading(Node *cur, Node *& prev)
{
    if(cur == NULL)
    {
        return;
    }
    _InOrderThreading(cur->_left, prev);
    //線索化
    if(cur->_left == NULL)
    {
        cur->_leftTag = THREAD;
        cur->_left = prev;
    }
    if(prev && prev->_right == NULL)
    {
        prev->_rightTag = THREAD;
        prev->_right = cur;
    }
    prev = cur;
    _InOrderThreading(cur->_right, prev);
}



中序遍歷:

void InOrderThd()
{
    Node *cur = _root;
    while(cur)
    {
        //找最左節點
        while(cur->_leftTag == LINK)
        {
            cur = cur->_left;
        }
        cout << cur->_data << " ";
        //訪問連續后繼
        while(cur->_rightTag == THREAD)
        {
            cur = cur->_right;
            cout << cur->_data << " ";
        }
        cur = cur->_right;
    }
}


后序線索化:

	void _PostOrderThreading(Node *root, Node *&prev)
	{
		if (root == NULL)
		{
			return;
		}
		_PostOrderThreading(root->_LChild, prev);
		_PostOrderThreading(root->_RChild, prev);
		if (root->_LChild == NULL)
		{
			root->_LTag = THREAD;
			root->_LChild = prev;
		}
		if (prev->_RChild == NULL)
		{
			prev->_RTag = THREAD;
			prev->_RChild = root;
		}
		prev = root;
	}



后序遍歷:

采用三叉鏈
或寫一個查找根節點的方法


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

北辰区| 黄梅县| 胶南市| 黄冈市| 定安县| 阿拉善右旗| 永仁县| 鄢陵县| 岫岩| 蕉岭县| 乌拉特前旗| 阿瓦提县| 凯里市| 成安县| 防城港市| 高陵县| 庆安县| 东源县| 清水县| 新和县| 海淀区| 满洲里市| 新乡市| 华坪县| 甘洛县| 鸡泽县| 河间市| 新民市| 抚宁县| 志丹县| 息烽县| 武冈市| 大余县| 瓦房店市| 白银市| 盐源县| 湖州市| 毕节市| 潢川县| 祁连县| 绍兴县|