對任意的二叉樹的結點結構都可以設定為如下結構,leftchild指向該結點的左孩子,rightchild指向右孩子,data域記錄結點資訊,以此結點結構形成的二叉樹稱為二叉鍊錶。
儲存結構型別為
typedef char elemtype;
typedef struct nodebitnode,*bitree;
以二叉樹的廣義表的形式建立,測試用例為"a(b(c,d(e,f)),i(j,k(x,y)))",基本思路是,將每個元素存入結點中,並根據標誌變數判斷是放入前結點的左孩子還是右孩子,後將『(』後的結點壓入棧中和標誌置1,遇到『)『則出棧,』,『則說明下個結點是父結點的右孩子,標誌置0,以下為**
bitnode *createbitnode(char *str)elseelse
}break;
}j++;ch=str[j];
}return bt;
}
遍歷分為先中後序遍歷,思想都差不多,就直接貼出前序遍歷測試**
#includetypedef char elemtype;
typedef struct nodebitnode,*bitree;
bitnode *createbitnode(char *str)elseelse
}break;
}j++;ch=str[j];
}return bt;
}//前序遍歷
void preorder(bitnode *bt)
}int main()
二叉樹的建立及遍歷
在資料處理的過程中,二叉樹的大小和形態不會發生劇烈變化的情況下,適合用陣列來表示二叉樹的抽象資料型別。完全二叉樹一般由陣列儲存表示,而一般二叉樹則是用鍊錶儲存表示的。本篇將採用二叉鏈的儲存方式對二叉樹進行儲存。二叉樹的建立,使用遞迴前序構建二叉樹。先建立根節點,在對左子樹進行建立,左子樹建立完成後,...
二叉樹及二叉樹的遍歷
二叉樹的定義 樹的度為2的樹。二叉樹的遞迴定義 二叉樹或者是一棵空樹,或者是一棵由乙個根結點和兩棵互不相交的左子樹和右子樹所組成的非空樹,而左右子樹又都是一棵二叉樹。1.第i層上至多有2的i 1次方個結點。2.深度為h的二叉樹至多有2的h次方減1個結點。3.每一層都滿的二叉樹稱為滿二叉樹,只在最後一...
線索二叉樹建立及遍歷
層序輸入 中序遍歷建立線索二叉樹 利用頭節點遍歷線索二叉樹 include using namespace std typedef char elemtype define maxsize 100 enum tag 二叉鍊錶的結構建立 typedef struct bitnodebitnode,bi...