摘要:
1,二叉樹的中序線索化
2,中序線索二叉樹查找前驅節點
3,中序線索二叉樹查找后繼節點
4,線索二叉樹的中序遍歷
1,二叉樹的中序線索化
二叉樹線索化的目的主要是為了快速查找一個節點的前驅節點和后繼節點,具體詳情可以看下前面講的,這里就不在重復介紹。
在前面我們講過二叉樹的前序線索化只能快速查找一個節點的后繼節點,而二叉樹的中序線索化既可以快速查找一個節點的前驅節點,也可以快速查找一個節點的后繼節點。二叉樹的節點類如下:
Java 代碼:
public class TreeNode {
public int val;// 節點值
// isPre 為false時,left指向左子節點。
// isPre 為true時,left指向前驅節點。
// isPost 為false時,right指向右子節點。
// isPost 為true時,right指向后繼節點。
public boolean isPre, isPost;
// 二叉樹的左右子節點
public TreeNode left, right;
public TreeNode(int val) {
this.val = val;
}
}
C++ 代碼:
struct TreeNode {
int val;// 節點值
// isPre 為false時,left指向左子節點。
// isPre 為true時,left指向前驅節點。
// isPost 為false時,right指向右子節點。
// isPost 為true時,right指向后繼節點。
bool isPre = false, isPost = false;
// 二叉樹的左右子節點
TreeNode *left = nullptr;// 左子樹
TreeNode *right = nullptr;// 右子樹
TreeNode(int val) : val(val) {}
};
對于二叉樹中序線索化,我們可以按照二叉樹中序遍歷的方式來把節點串起來,首先還是需要使用一個變量 pre 來記錄當前節點的前一個節點。
1,如果當前節點的左指針為空,就讓它的左指針指向 pre 節點。
2,如果 pre 節點不為空,且 pre 節點的右指針指向空,就讓 pre 節點的右指針指向當前節點。
注意中序遍歷中第一個節點的前驅節點是空,因為第一個節點前面是沒有節點的。同理最后一個節點的后繼節點也是空。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.