樹的基本概念:
樹具有遞迴性,非線性
完全二叉樹 :所有節點都在
舉例:
遞迴遍歷二叉樹:
#include #include #include #includetypedef struct binarynode binarynode;
//遞迴遍歷
void recursion(binarynode* root)
//遍歷左子樹
recursion(root->lchild);
//遍歷右子樹
recursion(root->rchild);
//先訪問根節點
printf("%c", root->ch);
}void creatbinarytree() ;
binarynode node2 = ;
binarynode node3 = ;
binarynode node4 = ;
binarynode node5 = ;
binarynode node6 = ;
binarynode node7 = ;
binarynode node8 = ;
// binarynode node9 = ;
//建立節點關係
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
//先序遍歷
recursion(&node1);
}int main()
求葉子節點數:(葉子節點概念,無左孩子和右孩子)
// 求葉子節點數目
#include #include #include #includetypedef struct binarynode binarynode;
void recursion(binarynode* root)
printf("%c", root->ch);
recursion(root->lchild);
recursion(root->rchild);
}binarynode* copybonarytree(binarynode* root)
binarynode* lchild = copybonarytree(root->lchild);
binarynode* rchild = copybonarytree(root->rchild);
binarynode* newnode = (binarynode*)malloc(sizeof(binarynode));
newnode->ch = root->ch;
newnode->lchild = lchild;
newnode->rchild = rchild;
return newnode;
}void free_binarytree(binarynode* root)
free_binarytree(root->lchild);
free_binarytree(root->rchild);
free_binarytree(root);
}void creatbinarytree() ;
binarynode node2 = ;
binarynode node3 = ;
binarynode node4 = ;
binarynode node5 = ;
binarynode node6 = ;
binarynode node7 = ;
binarynode node8 = ;
// binarynode node9 = ;
//建立節點關係
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
binarynode* root = copybonarytree(&node1);
recursion(root);
free_binarytree(root);
}int main()
LeetCode(十)二叉樹相關 1325
題目描述 給你一棵以 root 為根的二叉樹和乙個整數 target 請你刪除所有值為 target 的 葉子節點 注意,一旦刪除值為 target 的葉子節點,它的父節點就可能變成葉子節點 如果新葉子節點的值恰好也是 target 那麼這個節點也應該被刪除。也就是說,你需要重複此過程直到不能繼續刪...
每日程式設計(二十二) 二叉樹
題目描述 給定乙個二叉搜尋樹,找到該樹中兩個指定節點的最近公共祖先。例如,給定如下二叉搜尋樹 root 6,2,8,0,4,7,9,null,null,3,5 示例 1 輸入 root 6,2,8,0,4,7,9,null,null,3,5 p 2,q 8 輸出 6 解釋 節點 2 和節點 8 的最...
資料結構(十)二叉樹 基本概念
二叉樹結構一直以來都是資料結構課程中的重點和難點。在原始的二叉樹的基礎上,有不斷演化出了很多其他基於二叉樹的結構,但是不管從二叉樹衍生出來的結構多麼複雜多變,但是底層對於二叉樹結構的理論和操作都是相通的。所以從最基本的原生二叉樹開始,不斷進行總結和實踐,最終達到理解和掌握原生二叉樹和一些比較有代表性...